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


猜你喜欢
- 本文是在上篇文章Python中的type和object,做的补充,希望大家喜欢。这篇博客主要描述Python的新风格对象(new-style
- 一.假设有数据集dfdf.isnull()返回DateFrame,元素为空或者NA就显示True,否则就是False二.判断有空值的列df.
- 一、功能说明:1. 多线程方式抓取代理服务器,并多线程验证代理服务器ps 代理服务器是从http://www.cnproxy.com/ (测
- 引言opencv调用yolov3模型进行深度学习目标检测,以实例进行代码详解对于yolo v3已经训练好的模型,opencv提供了加载相关文
- 很久以前写过如何成为优秀的设计师,近半年来经常做设计评审,有很多感触,顺便写一点下来,我们的Blog也应该有更高的更新频率。言归正传,我认为
- 本文实例讲述了Python实现的简单模板引擎功能。分享给大家供大家参考,具体如下:#coding:utf- 8__author__=&quo
- 如下所示:import sysfrom PyQt5 import QtCore,QtGuifrom PyQt5.QtWidgets impo
- 前言:模拟学生成绩信息写入es数据库,包括姓名、性别、科目、成绩。示例代码1:【一次性写入10000*1000条数据】 【本人亲
- 每次查询分析器寻找路径时,并不会每一次都去统计索引中包含的行数,值的范围等,而是根据一定条件创建和更新这些信息后保存到数据库中,这也就是所谓
- 本文实例讲述了python实现同时给多个变量赋值的方法。分享给大家供大家参考。具体分析如下:python中可以同时给多个变量赋值,下面列举了
- PDOStatement::bindParamPDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 &
- 关于多维数组如何复合排序如数组:>>> import numpy as np>>> data = np.
- 前几天,为了增强本站的SEO,着手把另一个域名:www.aspxhome.com下的所有页面301转向到www.cidianwang.com
- time()方法返回时间,在UTC时代以秒表示浮点数。注意:尽管在时间总是返回作为一个浮点数,并不是所有的系统提供时间超过1秒精
- 连接分为:内连接、外连接、交叉连接 一、内连接——最常用 定义:仅将两个表中满足连接条件的行组合起来作为结果集。 在内连接中,只有在两个表中
- 网上有很多方法能够过去到IP地址归属地的脚本,但是我发现淘宝IP地址库的信息更详细些,所以用shell写个脚本来处理日常工作中一些IP地址分
- 翻译自https://pytorch.org/docs/stable/torchvision/models.html主要讲解了torchvi
- 公式首先需要了解CrossEntropyLoss的计算过程,交叉熵的函数是这样的:其中,其中yi表示真实的分类结果。这里只给出公式,关于Cr
- 接下来,请按照以下步骤操作:完成上述步骤后,您应该能够使用 sa 用户及其密码在程序中连接到 SQL Server Express Loca
- 因为概率问题,所以需要测试一下python的随机数分布。到底是平均(均匀)分布,还是正态(高斯)分布。测试代码如下:#! /usr/bin/