SQL中的REGEXP正则表达式使用指南
1. 基本语法
在SQL中使用REGEXP或RLIKE(在MySQL中是同义词)来进行正则表达式匹配:
SELECT column_name FROM table_name WHERE column_name REGEXP 'pattern';
 
2. 常用元字符
- ^ - 匹配字符串开始位置
 - $ - 匹配字符串结束位置
 - . - 匹配任意单个字符
 - ***** - 匹配前面的字符零次或多次
 - + - 匹配前面的字符一次或多次
 - ? - 匹配前面的字符零次或一次
 
3. 实例演示
以下是一些常见的REGEXP使用示例:
-- 查找以'A'开头的名字
SELECT name FROM users WHERE name REGEXP '^A';-- 查找以'ing'结尾的单词
SELECT word FROM words WHERE word REGEXP 'ing$';-- 查找包含数字的字符串
SELECT text FROM messages WHERE text REGEXP '[0-9]';
 
4. 字符类
- [abc] - 匹配方括号中的任意字符
 - [^abc] - 匹配除了方括号中字符的任意字符
 - [a-z] - 匹配a到z范围内的任意字符
 - [0-9] - 匹配0到9范围内的任意数字
 
5. 量词
可以使用量词来指定匹配的次数:
-- 匹配包含2-5个'a'的字符串
SELECT text FROM table WHERE text REGEXP 'a{2,5}';-- 匹配包含至少3个'a'的字符串
SELECT text FROM table WHERE text REGEXP 'a{3,}';
 
6. 常用转义字符
- \d - 匹配任意数字,等同于[0-9]
 - \D - 匹配任意非数字
 - \w - 匹配字母、数字或下划线
 - \s - 匹配任意空白字符
 
7. 注意事项
- 正则表达式匹配默认是不区分大小写的
 - 使用BINARY关键字可以进行区分大小写的匹配
 - 在模式中使用特殊字符时需要使用反斜杠转义
 
使用示例:
-- 区分大小写的匹配
SELECT * FROM table WHERE column REGEXP BINARY 'pattern';-- 转义特殊字符
SELECT * FROM table WHERE column REGEXP '\\.';
 
