正则表达式规则表
我们可以利用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]';
