一、主要区别
(1) like的内容不是正则,而是通配符。像mysql中的”like”,但是建议使用高级函数”instr”效率更高。
(2) rlike的内容可以是正则,正则的写法与java一样。需要转义,例如’\m’需要使用’\m’
(3) regexp == rlike 同义词 not like not regexp
二、Like常用方法
1.like关键字
like有两个模式:_和%
_:表示单个字符,用来查询定长的数据
%:表示0个或多个任意字符
2.示例
1 | (1)SELECT * FROM Persons WHERE City LIKE 'N%' "Persons" 表中选取居住在以 "N" 开始的城市里的人 |
三、Mysql中Regexp常见用法
模糊匹配,包含特定字符串
1
2
3
4
5#查找content字段中包含“车友俱乐部”的记录
select * from club_content where content regexp '车友俱乐部'
# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '%车友俱乐部%'模糊匹配,以特定字符串开头
1
2
3
4
5# 查找content字段中以“车友”开头的记录
select * from club_content where content regexp '^车友'
# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '车友%'模糊匹配,以特定字符串结尾
1
2
3
4
5# 查找content字段中以“车友”结尾的记录
select * from club_content where content regexp '车友$'
# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '%车友'模糊匹配 或关系
1
2# 查找content字段中包含“心得”、“分享”或“技术贴”
select * from club_content where content REGEXP '心得|分享|技术贴'模糊匹配,不包含单个字符
1
2# 查找content字段中不包含“车”字、“友”字的记录
select * from club_content where content REGEXP [^车友]这个结果跑出来一看大吃一惊,竟然把所有记录给跑出来,这是为什么呢?
因为一旦加了这个方括号”[]”,它就把里面的内容拆成单个的字符再匹配,它会逐个字符去匹配判断是不是等于“车”,或者是不是等于“友“,返回的结果是一组0、1的逻辑值。
如果想匹配不包含特定字符串,该怎么实现呢?
模糊匹配,不包含特定字符串
1 | # 查找content字段不包含“车友”字符串的记录 |
1 | 交集 |
原文链接:https://blog.csdn.net/ZZQHELLO2018/java/article/details/92794555