REGEXP_MATCHES(Transact-SQL) 预览版

适用于:SQL Server 2025 (17.x) 在Microsoft Fabric 中预览 Azure SQL 数据库Azure SQL 托管实例 SQL 数据库

注释

作为预览版功能,本文中介绍的技术受制于 Microsoft Azure 预览版补充使用条款

返回与字符串匹配正则表达式模式的捕获子字符串表。 如果未找到匹配项,该函数将不返回任何行。

REGEXP_MATCHES
     (
      string_expression,
      pattern_expression [, flags ]
     )

需要数据库兼容性级别 170。 若要设置数据库兼容性级别,请查看 ALTER DATABASE (Transact-SQL) 兼容性级别

论据

string_expression

字符串的表达式。

可以是字符串的常量、变量或列。

数据类型: charncharvarcharnvarchar

注释

对于REGEXP_LIKEREGEXP_COUNT参数,函数REGEXP_INSTR函数支持 LOB 类型(varchar(max)nvarchar(max)最多 2 MB。

pattern_expression

要匹配的正则表达式模式。 通常是文本文本。

数据类型: charncharvarcharnvarcharpattern_expression 支持最大字符长度为 8,000 字节。

标志

指定用于搜索匹配项的修饰符的一个或多个字符。 类型为 varcharchar,最多包含 30 个字符。

例如,ims。 默认值为 c。 如果提供了空字符串 (' ') ,它将被视为默认值 ('c')。 提供 c 或任何其他字符表达式。 如果标志包含多个相互矛盾的字符,则 SQL Server 使用最后一个字符。

例如,如果指定 ic 正则表达式返回区分大小写的匹配。

如果值包含除 受支持标志值中列出的字符以外的字符,则查询将返回如下例所示的错误:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
支持的标志值
旗帜 DESCRIPTION
i 不区分大小写 (默认值 false
m 多行模式: ^$ 匹配开始/结束行,以及开始/结束文本(默认值 false
s . 匹配 \n (默认值 false
c 区分大小写(默认值 true

退货

返回表格结果,如下所示:

列名称 数据类型 DESCRIPTION
match_id bigint 匹配字词的序列。
start_position int 起始索引位置。
end_position int 结束索引位置。
string_expression string_expressionvarchar 相同的类型 匹配表达式。
substring_matches json 描述匹配项的 JSON 文档。

例子

'Learning #AzureSQL #AzureSQLDB' 该开头返回表格结果,该结果后跟一 # 个或多个字母数字字符 (A-Z, a-z, 0-9) 或下划线 (_)。

SELECT *
FROM REGEXP_MATCHES('Learning #AzureSQL #AzureSQLDB', '#([A-Za-z0-9_]+)');
match_id start_position end_position match_value substring_matches
1        10             18           #AzureSQL   [{"value":"AzureSQL","start":11,"length":8}]
2        20             30           #AzureSQLDB [{"value":"AzureSQLDB","start":21,"length":10}]

ABC 该匹配字符串返回字符串,这些字符串以字母 A 开头,后跟两个字符。

SELECT *
FROM REGEXP_MATCHES('ABC', '^(A)(..)$');
match_id start_position end_position match_value substring_matches
1        1              3            ABC         [{"value":"A","start":1,"length":1},{"value":"BC","start":2,"length":2}]