关闭

mysql like查询语句%、_、escape等通配符的用法详解

来源:网络 文章列表 2019-05-10 8
mysql like语句的用法详解

mysql like语句中的通配符有:百分号、下划线和escape三种。

mysql like %通配符

表示任意个或多个字符。可匹配任意类型和长度的字符。

select * from user where uname like '%李';   

 %李 表示以“李”字符结尾,而前面可以是任意字符

select * from user where uname like '李%'; 

李% 表示以“李”字符开头,而后面可以是任意字符

select * from user where uname like '%李%'; 

%李% 表示查询字段里任意位置包含“李”字,这种情况包含(%李  李%)这2种情况。

 

MySQL LIKE 区分大小写

MySQL LIKE 匹配字符时,默认是不区分大小写的,如果需要在匹配的时候区分大小写,可以加入 BINARY 操作符:

SELECT * FROM user WHERE uname LIKE BINARY '%abb%'
SELECT * FROM user WHERE uname LIKE BINARY '%aBB%'

BINARY 操作符表示按照二进制进行比较,因此加上该操作符后,便可以严格区分大小写,因此以上两条 SQL 查询出来的内容是不同的。

 

MySQL LIKE 中文字符匹配

由于数据存储编码问题,在某些情况下,MySQL 进行 LIKE 搜索返回的数据中除了符合要求的数据外,往往还会返回许多不相干的数据。这时候也需要在 LIKE 后面加上 BINARY 操作符以进行二进制比较:

SELECT * FROM user WHERE uname LIKE BINARY '%李%'

提示

当在 LIKE 匹配时加上 BINARY 操作符后,则会严格区分英文大小写。因此当检索的内容是中英文混合且需要忽略英文大小写的时候,就会遇到麻烦。为解决此问题,需要引入 MySQL 中的 UPPER() 与 CONCAT() 函数:

  • UPPER():将英文字符串变大写,同UCASE()
  • CONCAT():将多个字符串连接成一个字符串

语法如下:

UPPER(str)
CONCAT(str1,str2,...)

因此当我们要进行中英文混合匹配检索且要忽略英文大小写时,可以使用如下例所示的 SQL 语句:

SELECT * FROM user WHERE UPPER(uname) LIKE BINARY CONCAT('%',UPPER('a中文b'),'%')

 

MySQL 多个 LIKE查询 ,可结合 AND 使用

另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件

SELECT * FROM user WHERE uname LIKE '%三%' AND uname LIKE '%猫%'

若使用

SELECT * FROM user WHERE uname LIKE '%三%猫%'

虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

 

 mysql like _ 通配符

表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)

select * from user where uname like '_';   
select * from user where uname like '李_';   
select * from user where uname like 'h_李';  

 

mysql like escape 通配符

escape 转义 % _

如果查询语句要查%或者_,怎么办呢?

可以使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用

select uname from user where uname like '%li/_%' escape '/';   
select uname from user where uname like '%li/%%' escape '/';

 

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论