MySQL 支持正则表达式(REGEXP)用于模式匹配。以下是常用的正则表达式元字符及其说明:

  1. .:匹配任意单个字符。

  2. ^:匹配字符串的开头。

  3. $:匹配字符串的结尾。

  4. *:匹配前面的子表达式零次或多次。

  5. +:匹配前面的子表达式一次或多次。

  6. ?:匹配前面的子表达式零次或一次。

  7. {n}:匹配前面的子表达式恰好 n 次。

  8. {n,}:匹配前面的子表达式至少 n 次。

  9. {n,m}:匹配前面的子表达式至少 n 次,至多 m 次。

  10. []:匹配括号内的任意一个字符。

  11. [^]:匹配不在括号内的任意一个字符。

  12. |:匹配两个或多个模式之一。

  13. ():将模式分组。

案例

  1. 匹配以 "a" 开头的字符串

    SELECT * FROM table_name WHERE column_name REGEXP '^a';
  2. 匹配以 "a" 结尾的字符串

    SELECT * FROM table_name WHERE column_name REGEXP 'a$';
  3. 匹配包含 "abc" 的字符串

    SELECT * FROM table_name WHERE column_name REGEXP 'abc';
  4. 匹配包含 "a" 或 "b" 的字符串

    SELECT * FROM table_name WHERE column_name REGEXP 'a|b';
  5. 匹配包含 "a" 至少两次的字符串

    SELECT * FROM table_name WHERE column_name REGEXP 'a{2,}';
  6. 匹配包含 "a" 至多两次的字符串

    SELECT * FROM table_name WHERE column_name REGEXP 'a{0,2}';
  7. 匹配包含 "a" 或 "b" 或 "c" 的字符串

    SELECT * FROM table_name WHERE column_name REGEXP '[abc]';
  8. 匹配不包含 "a" 或 "b" 或 "c" 的字符串

    SELECT * FROM table_name WHERE column_name REGEXP '[^abc]';
  9. 匹配以 "a" 开头且以 "b" 结尾的字符串

    SELECT * FROM table_name WHERE column_name REGEXP '^a.*b$';
  10. 匹配包含 "a" 后跟任意两个字符的字符串

    SELECT * FROM table_name WHERE column_name REGEXP 'a..';

这些案例展示了如何使用 MySQL 的正则表达式进行模式匹配。

本篇文章内容来源于:MySQL 正则表达式详细说明以及案例