MYSQL数据查询 - 正则表达式

133 阅读1分钟

MYSQL - 正则表达式示例

^ 以...开头

匹配f_name列以b开头的值的记录

SELECT *
FROM fruits
WHERE f_name
REGEXP '^b';

匹配f_name列以be开头的值的记录

SELECT *
FROM fruits
WHERE f_name
REGEXP '^be';

$ 以...结尾

匹配f_name列以y结尾的值的记录

SELECT *
FROM fruits
WHERE f_name
REGEXP 'y$';

匹配f_name列以rry结尾的值的记录

SELECT *
FROM fruits
WHERE f_name
REGEXP 'rry$';

. 代替任意一个字符

匹配f_name列中a什么g的记录

SELECT *
FROM fruits
WHERE f_name
REGEXP 'a.g';

* + 匹配多个字符

'*' 如下示例:匹配0个a或者任意多个其他字符

SELECT *
FROM fruits
WHERE f_name REGEXP '^ba*';

+ 如下示例:'a'至少被匹配一次。

SELECT *
FROM fruits
WHERE f_name REGEXP '^ba+';

查询包含字符串xxx的记录

查询f_name列任何含有on字符串的记录;

SELECT *
FROM fruits
WHERE f_name REGEXP 'on';

查询f_name列任何含有on或者ap字符串的记录;

SELECT *
FROM fruits
WHERE f_name REGEXP 'on|ap';

LIKE匹配,和REGEXP 'on|ap'的区别:LIKE匹配查询不到on|ap出现在字符串中间的记录,而REGEXP则只要包含on|ap的字串记录,就符合。

匹配指定字符中任意一个 []

匹配[]中的任意一个字符:

SELECT *
FROM fruits
WHERE f_name
REGEXP '[ot]';

匹配指定字符以外的字符

匹配除了a-e和1-2以外字符的记录;

SELECT *
FROM fruits
WHERE f_id
REGEXP '[^a-e1-2]';

  • "字符串{n,}": 表示至少匹配n次前面的字符;
  • "字符串{n,m}": 表示至少匹配n次前面的字符,最多匹配m次前面的字符;