正则表达式规则表
我们可以利用RELIKE或REGEXP运算符在WHERE子句中使用正则表达式。使用REGEXP(见下表)。 Mysql官网REGEXP示例地址
表达式 | 描述 |
---|---|
* | 零次或多次重复 |
+ | 一个或多个重复 |
? | 可选字符 |
. | 任何字符 |
\. | 区间 |
^ | 以……开始 |
$ | 以……结束 |
[abc] | 只有a b c |
[^abd] | 非a、非b、非c |
[a-z] | 字符a到z |
[0-9] | 数字0到9 |
^…$ | 开始和结束 |
\d | 任何数字 |
\D | 任何非数字字符 |
\s | 任何空格 |
\S | 任何非空白字符 |
\w | 任何字母数字字符 |
\W | 任何非字母数字字符 |
{m} | m次重复 |
{m,n} | m到n次重复 |
Mysql中的正则表达式的使用例子(mysql8 cookbook)
找出名名字以 Chirst 开头的所有员工的人数
SELECT COUNT(*) FROM `employees` WHERE first_name RLIKE '^christ';
SELECT COUNT(*) FROM `employees` WHERE first_name REGEXP '^christ';
SELECT COUNT(*) FROM `employees` WHERE first_name LIKE 'christ%';
找出姓氏以ba结尾的所有员工的人数。
SELECT COUNT(*) FROM `employees` WHERE last_name = 'ba$'; SELECT COUNT(*) FROM `employees` WHERE last_name REGEXP 'ba$'; SELECT COUNT(*) FROM `employees` WHERE last_name LIKE '%ba';
查找姓氏不包含元音字母(a、e、i、o、u)的所有员工的人数
SELECT COUNT(*) FROM `employees` WHERE last_name NOT REGEXP '[aeiou]'; SELECT COUNT(*) FROM `employees` WHERE last_name NOT RLIKE '[aeiou]';