適用於: SQL Server 2025 (17.x)
Azure SQL Database Azure
SQL Managed Instance
SQL database in Microsoft Fabric
回傳一個捕捉子字串的表,這些子字串會將正則表達式模式與字串相匹配。 如果找不到相符專案,則函式不會傳回任何數據列。
REGEXP_MATCHES
(
string_expression,
pattern_expression [ , flags ]
)
需要資料庫相容性層級 170。 若要設定資料庫相容性層級,請檢閱 ALTER DATABASE (Transact-SQL) 相容性層級。
Note
規則運算式可在 Azure SQL 受控執行個體中使用 SQL Server 2025 或一 律up-to日期更新原則。
Arguments
string_expression
字元字串的表達式。
可以是字元字串的常數、變數或數據行。
數據類型: char、 nchar、 varchar 或 nvarchar。
Note
REGEXP_LIKE、 和REGEXP_COUNTREGEXP_INSTR函數支援 string_expression 參數的 LOB 類型 (varchar(max) 和 nvarchar(max)) 最多 2 MB。
pattern_expression
要比對的正則表達式模式。 通常是文字常值。
數據類型: char、 nchar、 varchar 或 nvarchar。 pattern_expression 支援最大字元長度 8,000 個字節。
flags
一或多個字元,指定用於搜尋相符專案的修飾詞。 類型為 varchar 或 char,最多 30 個字元。
例如: ims 。 預設值為 c。 如果提供空字串 (' ') ,則會將它視為預設值 ('c')。 提供 c 或任何其他字元表達式。 如果旗標包含多個相互矛盾的字元,則 SQL Server 會使用最後一個字元。
例如,如果您指定 ic regex 會傳回區分大小寫的比對。
如果值包含支援 旗標值所列的字元,查詢會傳回錯誤,如下列範例所示:
Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
支援的旗標值
| Flag | Description |
|---|---|
i |
不區分大小寫 (預設值 false) |
m |
多行模式: ^ 與 $ 比對開始/結束文字之外,還比對開始/結束文字 (預設值 false) |
s |
讓 . 比對 \n (預設值 false) |
c |
區分大小寫 (預設值 true) |
Returns
傳回表格式結果,如下所示:
| 欄位名稱 | 數據類型 | Description |
|---|---|---|
match_id |
bigint | 相符字組的順序。 |
start_position |
int | 起始索引位置。 |
end_position |
int | 結束索引位置。 |
match_value |
與 string_expression 或 varchar 相同的類型 |
比對運算式。 |
substring_matches |
json | 描述相符的 JSON 檔。 |
Examples
傳回表格式結果,其開頭 '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}]