MySQL支持使用正则表达式进行字符串匹配和替换。
正则表达式语法为:
sql
SELECT ...
WHERE column REGEXP '/pattern/';
例如:
- exact string match:
sql
SELECT * FROM products
WHERE name REGEXP '/Apple/';
这会匹配name字段等于Apple的行。
- . 匹配任意一个字符:
sql
SELECT * FROM products
WHERE name REGEXP '/.pad/';
这会匹配包含pad且pad前面是一个任意字符的name,如Ipad,Apad等。
- * 匹配0个或多个前导字符:
sql
SELECT * FROM products
WHERE name REGEXP '/phone.*/';
这会匹配包含以phone开头的name,后面跟0个或多个任意字符,如iphone X,phone123等。
- +匹配1个或多个前导字符:
sql
SELECT * FROM products
WHERE name REGEXP '/plus+/';
这会匹配包含plus后面至少跟1个或更多个同样字符的name,如plus+, plus++等。
- | 或运算:
sql
SELECT * FROM products
WHERE name REGEXP '/(iphone|samsung)/';
这会匹配包含iphone或samsung的name字段。
- ^和$分别匹配字符串的开始和结束:
sql
SELECT * FROM products
WHERE name REGEXP '/^apple$/';
这只会匹配等于apple的name字段。
MySQL还支持更加复杂的正则表达式,以及REGEXP_REPLACE()函数实现正则替换,满足大部分字符串处理需求。