在 MySQL 中,REGEXP_LIKE() 函数用于检查一个字符串是否与正则表达式匹配。不过需要注意的是,REGEXP_LIKE() 并不是所有版本的 MySQL 都支持的函数。这个函数是在 MySQL 8.0 版本中引入的。
基本语法
REGEXP_LIKE(str, pat [, match_type ])
str: 要测试的字符串。pat: 正则表达式模式。match_type: 可选参数,用于指定匹配的行为,可以是以下值:'c'表示进行大小写敏感的匹配(默认)。'i'表示进行大小写不敏感的匹配。
示例
假设有一个表 employees,其中有一个字段 email,我们想要找出所有以 .com 结尾的电子邮件地址,可以使用如下 SQL 语句:
SELECT * FROM employees WHERE REGEXP_LIKE(email, '\.com$', 'i');
这里 'i' 表示不区分大小写,所以无论是 .Com、.COM 还是其他形式,都会被匹配到。
注意事项
-
如果你的 MySQL 版本低于 8.0,则可能需要使用
REGEXP或RLIKE操作符来实现相同的功能。例如,上面的例子可以改写为:SELECT * FROM employees WHERE email REGEXP '\\.com$'; -
在正则表达式中,
.和$都是特殊字符,.匹配任意单个字符,而$表示字符串的结束位置。因此,在正则表达式中查找实际的点号(.),需要对其进行转义(即使用\.)。 -
当使用
REGEXP或RLIKE时,默认情况下是大小写敏感的,如果需要不区分大小写的匹配,可以在模式前加上(?i),或者将整个查询用LOWER()函数包裹,确保比较时都是小写字母。
