如何使用MySQL中的正则表达式?

MySQL支持使用正则表达式进行字符串匹配和替换。

正则表达式语法为:

sql
SELECT ... 
WHERE column REGEXP '/pattern/';

例如:

  1. exact string match:
sql
SELECT * FROM products 
WHERE name REGEXP '/Apple/';

这会匹配name字段等于Apple的行。

  1. . 匹配任意一个字符:
sql
SELECT * FROM products
WHERE name REGEXP '/.pad/';  

这会匹配包含pad且pad前面是一个任意字符的name,如Ipad,Apad等。

  1. * 匹配0个或多个前导字符:
sql
SELECT * FROM products  
WHERE name REGEXP  '/phone.*/';

这会匹配包含以phone开头的name,后面跟0个或多个任意字符,如iphone X,phone123等。

  1. +匹配1个或多个前导字符:
sql
SELECT * FROM products   
WHERE name REGEXP  '/plus+/'; 

这会匹配包含plus后面至少跟1个或更多个同样字符的name,如plus+, plus++等。

  1. | 或运算:
sql
SELECT * FROM products
WHERE name REGEXP  '/(iphone|samsung)/';

这会匹配包含iphone或samsung的name字段。

  1. ^和$分别匹配字符串的开始和结束:
sql
SELECT * FROM products 
WHERE name REGEXP  '/^apple$/';

这只会匹配等于apple的name字段。
MySQL还支持更加复杂的正则表达式,以及REGEXP_REPLACE()函数实现正则替换,满足大部分字符串处理需求。