MySQL REGEXP_INSTR() 函数

17 Mar 2025 | 阅读 2 分钟

MySQL 的 REGEXP_INSTR() 函数用于模式匹配。它是一个函数,用于返回匹配给定字符串的子字符串的索引值。如果未找到匹配项,则此函数返回 0。否则,它返回 1。如果任一表达式或模式为 NULL,则返回 NULL。这里的字符索引从 1 开始。

语法

以下是在 MySQL 中使用此函数的基本语法

参数解释

REGEXP_INSTR() 函数参数的解释如下:

expression:这是一个字符串,我们将通过正则表达式参数和函数对其执行搜索。

patterns:它代表用于匹配的正则表达式字符。

REGEXP_INSTR() 函数使用以下各种可选参数:

pos:用于指定搜索在 expression 中开始的位置。如果未指定此参数,则默认为 1。

occurrence:用于指定我们要搜索匹配的第几次出现。如果未指定此参数,则默认为 1。

return_option:用于指定返回匹配子字符串的哪种类型的位置。如果其值为 0,则表示函数返回匹配子字符串的第一个字符的位置。如果其值为 1,则返回匹配子字符串后面的位置。如果未指定此参数,则默认为 1。

match_type:这是一个字符串,使用以下字符执行匹配。

  • c:表示区分大小写的匹配。
  • i:表示不区分大小写的匹配。
  • m:表示多行模式,允许字符串内的行终止符。默认情况下,此函数匹配字符串开头和结尾的行终止符。
  • n:用于修改 . (点) 字符以匹配行终止符。
  • u:表示仅 Unix 行尾。

让我们通过几个示例来理解它。

示例

此语句返回子字符串“BCA”在 expression 中的起始索引。如果执行该语句,它将返回 1,这是给定字符串的第一个索引。这是因为这里我们没有指定任何可选参数。

请参见下面的输出

MySQL regexp_instr Function

在此语句中,我们通过修改查询中的可选参数位置和出现次数,定位模式字符串 'BCA' 的第二次出现

请参见下面的输出

MySQL regexp_instr Function

在此语句中,我们使用了return_option 参数。当我们需要获取某种标识符之前的信息时,此参数非常有用。

请参见下面的输出

MySQL regexp_instr Function