欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql 使用通配符(%,_,[ ],[^])进行多条件模糊查询(like,regexp)

程序员文章站 2024-03-01 18:20:04
...
(一)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"

Mysql 使用通配符(%,_,[ ],[^])进行多条件模糊查询(like,regexp)

[ ] ,注意该通配符与关键字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的配置方式.如果是区分大小写,那么像YvesHe这样记录是不能被"yves__"这样的匹配条件匹配的.

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

注意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" 

查询结果如下:
Mysql 使用通配符(%,_,[ ],[^])进行多条件模糊查询(like,regexp)

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

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

查询结果如下:
Mysql 使用通配符(%,_,[ ],[^])进行多条件模糊查询(like,regexp)
参考文章:
https://blog.csdn.net/u011479200/article/details/78513632
https://blog.csdn.net/The_Best_Hacker/article/details/108196388