like和regexp的区别

本文探讨了SQL中LIKE和REGEXP模糊查询的差异。区别1指出两者在匹配模式上的相似性,但LIKE区分大小写,而REGEXP默认不区分。区别2说明REGEXP在不加binary关键字时会忽略大小写,但通过binary可以修复此问题。区别3展示了REGEXP支持更复杂的模式匹配,如字符集和或操作。文章提供了多个实例来辅助理解,并总结了两者常用用法。
摘要由CSDN通过智能技术生成

看了好多资料,关于like和regexp的区别,很多说的都不清楚,偶然看到了这个,还稍微清楚点。

区别1: 'XXX%'和 ‘XXX.’

select sid,sname,sage from student where sname like ‘李%’;

select sid,sname,sage from student where sname regexp ‘李.’

以上的语句是模糊查询中最常使用的语句类型了,两段语句都是要查询student表内姓李的学生的相关信息,但是like查询后面跟的是’李%‘,regexp查询后面则跟的是 ‘李.’,“%”和“.”起到的作用基本上是相同的,我们也应该知道like查询中“%”也可以放在关键字前面比如’%云’,正则表达式就可以写为’.云’。

区别2:正则表达式表示对大小写傻傻分不清楚

select sid,sname,sage from student where birthplace like ‘S%’;

select sid,sname,sage from student where birthplace regexp ‘S.’

以上两段语句看起来是查询出生地是以大写字母S开头的学生的相关信息,区别like就可以很精确的完成任务,然而正则表达式不但会在birthplace那一列搜寻大写字母S开头的值所对应的信息,也会搜寻小写字母s开头的值所对应的学生信息。当然了这种毛病还是可以抢救一下的,方法就是在regexp后面加上’bianry’关键字,binary是二进制的意思,我表示不理解为什么要用这么个关键字,无论如何,regexp binary语句就可以识别出大小写了

区别3:正则表达式表示其他的方面

select * from student where sname like ‘[李周]%’;

select * from student where sname regexp ‘[李周].’;

以上两条语句,第一条不返回任何值,第二条却可以返回姓李或者周的同学的相关信息,且还有另外一种表发方法喔,请看下面的代码

select * from student where sname regexp ‘李|周.’;

即在regexp表达式内, '[XY].'和’X|Y.'的作用是相同的,系不系很溜

基本区别就先讲到这里吧,下面附上本人做的一些关于二者常用用法的总结,供大家参考,如果大家发现有啥不对的,还望不吝赐教啊,蟹蟹蟹蟹蟹蟹蟹~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值