SQL的模糊匹配区别---like,rlike,regexpx

一、主要区别
(1)like的内容不是正则,而是通配符。像mysql中的"like",但是建议使用高级函数"instr"效率更高。

(2)rlike的内容可以是正则,正则的写法与java一样。需要转义,例如’\m’需要使用’\m’

(3)regexp == rlike 同义词 not like not regexp

二、Like常用方法
1.like关键字
like有两个模式:_和%

_:表示单个字符,用来查询定长的数据

%:表示0个或多个任意字符

2.示例

(1)SELECT * FROM Persons  WHERE City LIKE 'N%'     "Persons" 表中选取居住在以 "N" 开始的城市里的人
(2)SELECT * FROM Persons  WHERE City LIKE '%g'     "Persons" 表中选取居住在以 "g" 结尾的城市里的人
(3)SELECT * FROM Persons   WHERE City LIKE '%lon%'  从 "Persons" 表中选取居住在包含 "lon" 的城市里的人
(4)SELECT * FROM Persons   WHERE City NOT LIKE '%lon%'  从 "Persons" 表中选取居住在不包含 "lon" 的城市里的人

三、Mysql中Regexp常见用法
模糊匹配,包含特定字符串

  #查找content字段中包含“车友俱乐部”的记录
 select * from club_content where content regexp '车友俱乐部'

# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '%车友俱乐部%'

模糊匹配,以特定字符串开头

# 查找content字段中以“车友”开头的记录
select * from club_content where content regexp '^车友'

# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '车友%'

模糊匹配,以特定字符串结尾

# 查找content字段中以“车友”结尾的记录
select * from club_content where content regexp '车友$'

# 此时的regexp与like的以下用法是等同的
select * from club_content where content like '%车友'

模糊匹配 或关系

# 查找content字段中包含“心得”、“分享”或“技术贴”
select * from club_content where content  REGEXP '心得|分享|技术贴'

模糊匹配,不包含单个字符

# 查找content字段中不包含“车”字、“友”字的记录
select * from club_content where content  REGEXP [^车友]

这个结果跑出来一看大吃一惊,竟然把所有记录给跑出来,这是为什么呢?
因为一旦加了这个方括号"[]",它就把里面的内容拆成单个的字符再匹配,它会逐个字符去匹配判断是不是等于“车”,或者是不是等于“友“,返回的结果是一组0、1的逻辑值。

如果想匹配不包含特定字符串,该怎么实现呢?

模糊匹配,不包含特定字符串

# 查找content字段不包含“车友”字符串的记录
select * from club_content where content not REGEXP '车友'

交集
表的字段就是
name  no    
a     2,9   
b     8,10  
字符串是str="0,1,2,3,4"
接下来就是查 no字段里跟str里有交集的记录
查询的结果就是name=a的,no=2,9的
select * from table1 where concat(',',no,',') regexp concat(',0,|,1,|,2,|,3,|,4,');  

某字段中搜索
可以使用FIND_IN_SET
name  no    
a     2,9   
b     8,10  
想查出no中包含2的记录
select * from table1 where FIND_IN_SET('2', no)

替换某字段中的内容
UPDATE `blog_iplimit` SET `ip` = REPLACE(`ip`, ',', '')



作者:Darker_坤
链接:https://www.jianshu.com/p/319ae54c72bc
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值