添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
(一)SQL通配符:
通配符 说明
% 与包含0个或多个字符串匹配
_ 与任意单个字符匹配
[ ] 与特定范围(例如[a-d]或特定集例如[abcdef])中的任意字符串匹配
[^] 与特定范围(例如,[^a-f])或特定集(例如,[^abcdef])之外的任意单字符匹配。

1、查找字段“db_name”中以“Ch”结尾的所有数据。

select * from monitor_db_conf WHERE db_name LIKE "%Ch" 

2、查找字段“db_name”中以“Ch”开头的所有数据。

select * from monitor_db_conf WHERE db_name LIKE "Ch%"

3、查找字段“db_name”中包含"Ch"的所有数据,包含开头、结尾。

select * from monitor_db_conf WHERE db_name LIKE "%Ch%"

_ 下划线,可以表示为数字、中文、英文

查找字段“db_name”中符合以“heryl”结尾,首字母为任意字符。

select * from monitor_db_conf WHERE db_name LIKE "_heryl"

[ ] ,注意该通配符与关键字REGEXP搭配使用。

1、查找首字母为A到D,后缀为“heryl”的数据,如:Cheryl、Aheryl

select * from monitor_db_conf WHERE db_name REGEXP '[A-D]heryl'

2、查找首字母为C或S,后缀为“heryl”的数据。

select * from monitor_db_conf WHERE db_name REGEXP '[CS]heryl'

[^],与上面的用法相反,与关键字REGEXP搭配使用。

匹配首字母除“S”以外,后缀为“heryl”的数据。

select * from monitor_db_conf WHERE db_name REGEXP '[^S]heryl' 

注意事项:

注意大小写,在使用模糊匹配时,也就是匹配文本时,mysql是可能区分大小的,也可能是不区分大小写的,这个结果是取决于用户对MySQL的配置方式.如果是区分大小写,那么像Cheryl这样记录是不能被"chery_"这样的匹配条件匹配的.

注意尾部空格,"%eryl"是不能匹配"Cheryl "这样的记录的.

注意NULL,%通配符可以匹配任意字符,但是不能匹配NULL,也就是说SELECT * FROM products WHERE products.prod_name like ‘%’;是匹配不到products.prod_name为NULL的的记录.

技巧与建议:

正如所见, MySQL的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。这里给出一些使用通配符要记住的技巧。

不要过度使用通配符。如果其他操作符能达到相同的目的,应该 使用其他操作符。
在确实需要使用通配符时,除非绝对有必要,否则不要把它们用 在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起 来是最慢的。
仔细注意通配符的位置。如果放错地方,可能不会返回想要的数.

(二)模糊查询多个字段方法

CONCAT,连接多个字段值,用法:CONCAT(str1,str2,...)

模糊匹配字段“db_name”和"wind_field_name",注意:如果查找字段中某个字段为null,则无法获取该条数据。

select * from monitor_db_conf WHERE CONCAT(wind_field_name,db_name) LIKE "%yl" 

查询结果如下:
在这里插入图片描述

CONCAT_WS,连接多个字段值,用分隔符分开。用法:CONCAT_WS(separator,str1,str2,...)

select * from monitor_db_conf WHERE CONCAT_WS("-",wind_field_name,db_name) LIKE "%yl"

查询结果如下:
在这里插入图片描述
参考文章:
https://blog.csdn.net/u011479200/article/details/78513632
https://blog.csdn.net/The_Best_Hacker/article/details/108196388

_代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出下面一条数据: 2、使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题 (1)尽量少以%或者_开头进行模糊查询 通过explain执行计划,我们发现,使用like模糊查询时,如果不以%和_开头查询的话,索引还是有效的 以%或者_开头查询,索引失效 (2)使用覆盖索引 当查询的的条件查询的结果都是索引中的字段的时候,这个索引我们可以称之为覆盖索引,这个时候,使用like模糊 众所周知,SQL语句中的like模糊查询   select * from table where name like‘%张蛋%’, 但实际开发中经常用到 select * from table where name  like concat(#{name},'%') 比如根据用户名或手机号模糊查找用户 (us.nick_name LIKE CONCAT('%',#{keyWord},'%'... 很多网友问到如何写模糊查询语句和多条件查询,这里我整理了一下,假设以姓名、性别、电话号...作为数据库中的字段名。通常写一个简单的模糊查询的SQL语句格式可以如下例:sql="select*from表名where字段名like’%"&request.form("请求变量")&"%’"说明:1、WHERE关键词的后面跟着用来过滤数据的条件,百分号%通配符,... SELECTBigCategory,SmallCategory,Model_No,1'yuefen',SUM(casewhenBizType='P'thenMONTH1Numend)asP,SUM(casewhenBizType='S'thenMONTH1Numend)asS,SUM(casewhenBizType='I'thenMONT...SELECT BigCategory,SmallCat... 1. like最基本的实现模糊匹配的语句,但一次只能匹配一种候选模式(like "%content%"),若要对多个候选进行模糊匹配,则需要写多次like,然后以or连接,但是当候选数目过多时,则该种方式明显不适用;2.REGEXP_LIKE与like的作用类似,以正则的方式进行匹配,支持多条件同时查询;select col from table t where REGEXP_LIKE(t.col... 一.使用LIKE和通配符 _ 场景1:我要搜索一个名字是3个字符的,可我都忘记叫什么了,那怎么搜索呢 SELECT * FROM test WHERE name LIKE'___'; (没错,一个下划线**_*对应一个字符) 场景2:我要搜索一个名字总共是3个字符的,可是我只记得第一个字符是 c 后面忘记/了,那怎么搜索呢 SELECT * FROM test WHE 在后台的项目中,会经常遇到,就是信息的查找,这里就举个简单的例子,如搜索某一个产品的信息,在一个表里面有多个字段,而搜索的内容可能是其中的某个字段,这样只有多字段查询才能实现。MySQL多字段模糊查询:指在表单中对多字段进行多个关键字的模糊查询,而这个关键字在所有字段里面的其中之一(也可以关联多表查询)。例如:表product里面有四个字段 id、name、title、description 产... SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1、%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 SELECT * FROM [user] WHERE u_name LIKE '%%' 将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * FROM [user] WHERE u_nam mysql用多个查询结果进行模糊匹配,类似like匹配多个查询结果。 like子句方便做对单个值的匹配,如果要对一个查询结果集都在一个查询语句里匹配,可以用mysql的正则表达式搭配group_concat函数做到。 先看数据表: 目标是在user表中,匹配出姓氏在family_info表中的记录。 使用group_concat函数来生成任意字符串左匹配的正则表达式字符串: select group_concat(concat('^',fi.family_name) SEPARATOR '|') fr - 如果关键字匹配上商品,则展示该商品以及店家信息, - 如果关键字匹配不上商品,匹配上店家,则要查询排序在前面的一条商品数据,展示该数据和该店家的信息。 - 如果关键字匹配上店家和商品,则展示该商品及该店家的信息。...