MySQL的REGEXP和LIKE有什么区别

MySQL的REGEXP和LIKE有什么区别

在MySQL中,REGEXP和LIKE都是用来进行字符串匹配的运算符,但二者却有着明显的区别。

1.基本用法

使用LIKE运算符时,可以使用百分号(%)匹配任意字符或者下划线(_)匹配单个字符。

SELECT * FROM mytable WHERE name LIKE 'John%';

这条SQL语句的意思是:选择mytable表中,以“John”开头的name列所有记录。

而REGEXP运算符则可以使用正则表达式,更加灵活。

SELECT * FROM mytable WHERE name REGEXP '^Joh[na]{1}';

这条SQL语句的意思是:选择mytable表中,name列以“Joh”开头,并且第四个字符是n或a的所有记录。

2.区分大小写

在LIKE运算符中,SQL语句是默认对大小写不敏感的。

SELECT * FROM mytable WHERE name LIKE 'john%';

这条SQL语句会选择mytable表中,以“john”开头的name列所有记录,而不管大小写。

而在REGEXP运算符中,默认是对于大小写敏感的。

SELECT * FROM mytable WHERE name REGEXP '^Joh';

这条SQL语句只会选择mytable表中,name列以“Joh”开头的记录,而不会选择以“joh”或者“JOH”开头的记录。

3.匹配范围

使用LIKE运算符时,只支持最简单的通配符“%”和“_”,不能进行更为复杂的匹配,如正则表达式中的“.*”和“d”等。

而使用REGEXP运算符,则可以使用正则表达式中的各种规则进行匹配,如字符集“[]”、重复“{m,n}”、或“|”等。

4.效率

在 LIKE 和 REGEXP 的效率上,LIKE 要比 REGEXP 更加高效。这是因为 LIKE 是基于自动机进行索引查询的,而 REGEXP 则需要对每一条记录进行扫描。

综上所述,虽然 LIKE 在使用上更加简单方便,但是在复杂的匹配中,REGEXP 显然更加强大。同时也需要注意,REGEXP 的效率比 LIKE 要低,因此在条件允许的情况下,应尽可能使用 LIKE 进行匹配查询。

晓白博客网版权所有,原文地址https://www.xbnb.cn/7299
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 如有资源失效请在下面及时反馈,谢谢!! 抢沙发

请登录后发表评论

    请登录后查看评论内容