mysql模糊匹配多个值的两种方法实例
作者:科学鸿 发布时间:2024-01-27 10:12:06
标签:mysql,模糊匹配,多个值
要求:实现mysql中对同个字段进行多个匹配值的模糊查询
先看数据表:
目标是在user表中,匹配出姓氏在family_info表中的记录。
方法一:将like作为连接条件
将查询表与需要匹配的多个值(可以是表或select子句结果)进行左连接,以字段使用like模糊匹配作为连接条件,再对连接结果进行非空过滤。
先看like模糊匹配作为连接条件的结果:
select u.*,fi.* from `user` u left join family_info fi
on u.name like concat(fi.family_name, '%')
能看到,没有对应匹配值的数据在查询中,family_name字段结果是null,此时再把语句进行调整,将匹配后family_name为null值的数据进行过滤,得到所需要的查询语句:
select u.* from `user` u left join family_info fi
on u.name like concat(fi.family_name, '%')
where fi.family_name is not null
能得到姓名为“张”、“王”开头的记录。
方法二:正则表达式搭配group_concat函数
使用group_concat函数来生成任意字符串左匹配的正则表达式字符串:
select group_concat(concat('^',fi.family_name) SEPARATOR '|') from family_info fi
使用regexp操作符来使用正则表达式:
select * from user u where u.name regexp
( select group_concat(concat('^',fi.family_name) SEPARATOR '|') from family_info fi )
结果是查询出了姓名为“张”、“王”开头的记录。
示例表的表语句:
CREATE TABLE `user` (
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'
INSERT INTO `user` (name,age) VALUES
('张三',21),
('李四',22),
('王五',23),
('张六',24),
('李七',25),
('王八',26);
CREATE TABLE `family_info` (
`family_name` varchar(32) DEFAULT NULL COMMENT '姓氏'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='姓氏表'
INSERT INTO family_info (family_name) VALUES
('张'),
('王');
来源:https://blog.csdn.net/qq_38066290/article/details/124100742
0
投稿
猜你喜欢
- 知识点简单的装饰器带有参数的装饰器带有自定义参数的装饰器类装饰器装饰器嵌套@functools.wrap装饰器使用基础使用简单的装饰器def
- 1、下载安装 python https://www.python.org/downloads/windows/web-based insta
- 1 编写 mysql.yaml文件编写yaml如下apiVersion: v1kind: Namespacemetadata:
- 我们使用pycharm的时候,有时遇到了不认识的方法习惯于将鼠标悬停在方法上查看方法介绍。那么如何设置呢?下面小编给大家分享一下。首先假如我
- 其实这个话题已经在侧面写了好几篇深刻反思,用我自己几年工作实践的体会来看,性格决定了将来的发展。某些特质虽然可以掩饰,但在这之上必然不可能有
- 以下就是跟大家分享的19个MySQL性能优化主要要点,一起学习学习。1、为查询优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高
- 介绍:今天在使用django的时候忽然想用到,如何匹配多个关键字的操作,我们知道django有一个objects.filter()方法,我们
- 本篇文章通过调用opencv里的函数简单的实现了对图像里特定颜色提取与定位,以此为基础,我们可以实现对特定颜色物体的前景分割与定位,或者特定
- 堆是一棵完全二叉树。堆分为大根堆和小根堆,大根堆是父节点大于左右子节点,并且左右子树也满足该性质的完全二叉树。小根堆相反。可以利用堆来实现优
- 前言本文做的是基于三层神经网络实现手写数字分类,神经网络设计是设计复杂深度学习算法应用的基础,本文将介绍如何设计一个三层神经网络模型来实现手
- 一、tensor加减乘除加法操作import torchx = torch.randn(2, 3)y = torch.randn(2, 3)
- 1. argparse 模块简介argparse是一个用来解析命令行参数的 Python 库,它是 Python 标准库的一部分。基于 py
- 注:Unicode相关知识的详细介绍请参考UTF-8, UTF-16, UTF-32 & BOM。 对于UTF-8/16/32而言,
- 一、前言我们一般在做接口关联时,会通过保存中间变量实现接口关联,在关联时就需要用到变量提取,那今天我们就介绍接口自动化中变量提取的两大神器:
- 1 什么是嵌套循环所谓嵌套循环就是一个外循环的主体部分是一个内循环。内循环或外循环可以是任何类型,例如 while 循环或 for 循环。
- 本文将介绍如何使用公司运行服务器进行开发调试,以及使用远程服务器python解释器,整理了对应的配置流程。进入配置页面Pycharm菜单栏,
- 动态生成的IFRAME,设置SRC时的,不同位置带来的影响。以下所说的是在IE7下运行的。IE6下也是同样。在这个blog中,直接点击运行代
- button元素在过去一直没有被重视,其实它比<input type="button">的语义强许多,制定性
- 本文主要介绍了用OpenCV进行年龄和性别检测的实现示例,分享给大家,具体如下:在本文中,我将带您完成用 Python 进行机器学习的年龄和
- 今天使用import pandasusers = pandas.read_csv("H:\python\data analysis