在数据检索和处理过程中常有一些双胞胎甚至三胞胎操作符来混淆我们的视听,今天我们聊一下like、rlike、regexp的区别及用法。
一、like操作符
1、用法:
1) 模糊查询能手:like操作符 + 通配符“_”或“%”或“[]”。
2) like匹配按字符逐一匹配,即使有一个字符不一样,也不会匹配成功。
2、通配符:
1) “_”仅表示一个字符,“%”表示一个或多个字符或空格,“[]”中指定字符、字符串或范围,要求所匹配对象为其中的任何一个。
2)通配符可以出现在任何位置。如:“_希望”,“大_望”,“大希_”,“_希_”。
举个例子,从学生表(student)中搜索姓“高”的同学的姓名和性别。
select name,sex from student where name like “高%”
再举个例子,从学生表(student)中搜索高幸福,高幸运,高幸好,高幸亏同学,咱们用“[]”实现,感受一下它的用法。这个时候它的用法其实类似于正则表达式。
select name,sex from student where name like “高幸[福运好亏]”
二、rlike操作符
1、模糊查询字段中包含某关键字的信息。
如:查询所有包含“希望”的信息:select * from student where name rlike ‘希望’
2、模糊查询某字段中不包含某关键字信息。
如:查询所有包含“希望”的信息:select * from student where name not rlike ‘希望’
3、模糊查询字段中以某关键字开头的信息。
如:查询所有以“大”开头的信息:select * from student where name not rlike ‘^大’
4、模糊查询字段中以某关键字结尾的信息。
如:查询所有以“大”结尾的信息:select * from student where name not rlike ‘大$’
5、模糊匹配或关系,又称分支条件。
如:查询出字段中包含“幸福,幸运,幸好,幸亏”的信息:
select * from student where name rlike ‘幸福|幸运|幸好|幸亏’
注意正则表达式或关系的表达方式为 |
上述例子中,只要字段中含有幸福,幸运,幸好,幸亏的信息都会取出,不必一字不差,这也正是rlike的好用之处,虽然有时like+通配符也会达到rlike的效果,但是通配符的查询效率相对较低,耗时较长。
三、regexp操作符
regexp==rlike 与rlike用法相同,果真是双胞胎,亲兄弟,此处不再赘述。