看了好多资料,关于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.'的作用是相同的,系不系很溜
基本区别就先讲到这里吧,下面附上本人做的一些关于二者常用用法的总结,供大家参考,如果大家发现有啥不对的,还望不吝赐教啊,蟹蟹蟹蟹蟹蟹蟹~~
、
、