MySQL REGEXP_SUBSTR() 函数使用指南

MySQL REGEXP_SUBSTR() 函数从一个字符串获取和指定模式匹配的子串并返回。

默认情况下, REGEXP_SUBSTR() 函数执行不区分大小写的匹配。

REGEXP_SUBSTR() 语法

这里是 MySQL REGEXP_SUBSTR() 的语法:

REGEXP_SUBSTR(str, regexp)
REGEXP_SUBSTR(str, regexp, position)
REGEXP_SUBSTR(str, regexp, position, occurrence)
REGEXP_SUBSTR(str, regexp, position, occurrence, mode)

参数

str
必需的。一个字符串。
regexp
必需的。正则表达式。
position
可选的。开始搜索的起始位置。默认为 1
occurrence
可选的。第几次匹配的内容。默认为 1
mode
可选的。执行匹配采用的模式。

匹配模式可以使用下面值中的一个或多个:

  • c: 区分大小写
  • i: 区分大小写
  • m: 多行匹配模式
  • n: 点 . 可以匹配行结束
  • u: 仅限 unix 行结尾

如果匹配模式存在矛盾的选项,则以最右边的为准。

返回值

REGEXP_SUBSTR() 函数在 str 中搜索和正则表达式 regexp 匹配的子字符串并返回。如果没有匹配到,则返回 NULL

如果 str 或者 regexpNULLREGEXP_SUBSTR() 将返回 NULL

REGEXP_SUBSTR() 示例

以下语句用来找出字符串 '123 abc 456 def' 中的第一组连续的数字。

SELECT REGEXP_SUBSTR('123 abc 456 def', '\\d+');
+------------------------------------------+
| REGEXP_SUBSTR('123 abc 456 def', '\\d+') |
+------------------------------------------+
| 123                                      |
+------------------------------------------+

如果想找出字符串 '123 abc 456 def' 中的第二组连续的数字,请使用下面的语句:

SELECT REGEXP_SUBSTR('123 abc 456 def', '\\d+', 1, 2);
+------------------------------------------------+
| REGEXP_SUBSTR('123 abc 456 def', '\\d+', 1, 2) |
+------------------------------------------------+
| 456                                            |
+------------------------------------------------+