適用於:SQL Server 2025 (17.x) 在
Microsoft Fabric 中預覽
Azure SQL Database
Azure SQL 受控實例 SQL 資料庫
本文介紹 SQL Server 的正規表示式。
備註
作為預覽功能,本文所述的技術受限於 Microsoft Azure 預覽版增補使用規定。
正則表達式或 regex 是定義文字搜尋模式的字元序列。 Regex 通常用於各種工作,包括模式比對、數據驗證、數據轉換和查詢。 它提供彈性且有效率的方式來搜尋、作及處理複雜的數據作業。
備註
正則表達式可在使用 Always-up-to-date 更新原則設定的 Azure SQL 受控實例中使用。
正則表達式的這個實作是以 RE2 正則表示式連結庫為基礎。 如需詳細資訊,請流覽 RE2 正則表示式語法。
例如:
功能 | 說明 |
---|---|
REGEXP_LIKE | 會傳回布爾值,指出文字輸入是否符合 regex 模式。 |
REGEXP_REPLACE | 傳回由取代字串所取代的修改來源字串,其中找到 regex 模式。 |
REGEXP_SUBSTR | 根據正則表達式模式擷取字串的部分。 傳回第 N 個符合 regex 模式的子字串。 |
REGEXP_INSTR | 根據所提供的選項,傳回相符子字串的開始或結束位置。 |
REGEXP_COUNT | 傳回字串中發生 regex 模式的次數計數。 |
REGEXP_MATCHES | 傳回符合正則表示式模式與字串的擷取子字串數據表。 如果找不到相符專案,則函式不會傳回任何數據列。 |
REGEXP_SPLIT_TO_TABLE | 傳回以 regex 模式分隔的字串分割數據表。 如果模式不相符,函式會傳回字串。 |
正則表達式可以由常值字元和具有特殊意義和功能的中繼字元組成。
簡單的正則表達式是一個單一的文字字元。 字元會比對本身,但中繼字元除外。 元字元包括*
、、+
、?
(
、)
、 或 |
。 若要比對中繼字元,請使用反斜杠逸出它。 例如,\*
匹配星號符號 *
字元。
接受的正則表達式字元
單一字元表達式
各種單字元運算式 | 範例 |
---|---|
任何字元,可能包括新行字元 (s=true) | . |
字元類別 | [xyz] |
反字元類別 | [^xyz] |
Perl 字元類別 | \d |
反 Perl 字元類別 | \D |
ASCII 字元類別 | [[:alpha:]] |
反 ASCII 字元類別 | [[:^alpha:]] |
Unicode 字元類別 (單字母名稱) | \pN |
Unicode 字元類別 | \p{Greek} |
反 Unicode 字元類 (單字母名稱) | \PN |
反 Unicode 字元類別 | \P{Greek} |
Perl 字元類別
下表列出目前支援的 Perl 字元類別。
Perl 字元類 (全為 ASCII) | 說明 |
---|---|
\d |
數字( [0-9] ) |
\D |
非數字( [^0-9] ) |
\s |
空白 ( [\t\n\f\r ] ) |
\S |
非空白 ( [^\t\n\f\r ] ) |
\w |
文字字元 ( [0-9A-Za-z_] ) |
\W |
非字母字符 ( [^0-9A-Za-z_] ) |
ASCII 字元類別
下表列出目前支援的 ASCII 字元類別。
ASCII 字元類別 | 說明 |
---|---|
[[:alnum:]] |
字母數字 ( [0-9A-Za-z] ) |
[[:alpha:]] |
字母 ( [A-Za-z] ) |
[[:ascii:]] |
ASCII ( [\x00-\x7F] ) |
[[:blank:]] |
空白 ( [\t ] ) |
[[:cntrl:]] |
控制([\x00-\x1F\x7F] ) |
[[:digit:]] |
數字( [0-9] ) |
[[:graph:]] |
圖像化 ( [!-~] 或 [A-Za-z0-9!“#$%&’()*+,\-./:;<=>?@[\\\]^_`{|}~] ) |
[[:lower:]] |
小寫 ( [a-z] ) |
[[:print:]] |
可列印的 ( [ -~] 或 [ [:graph:]] ) |
[[:punct:]] |
標點符號 ( [!-/:-@[-\``{-~] ) |
[[:space:]] |
空白 ( [\t\n\v\f\r ] ) |
[[:upper:]] |
大寫 ( [A-Z] ) |
[[:word:]] |
文字字元 ( [0-9A-Za-z_] ) |
[[:xdigit:]] |
十六進位數位 ( [0-9A-Fa-f] ) |
原義字元
- 信件
- 數字
- 符號
元字符
-
*
比對前一個字元出現零次或多次 -
^
符合行的開頭
分組
使用以下方法來群組和擷取樣式的部分:
- 括弧
( )
- 中括弧
[ ]
- 大括號
{ }
標誌
使用旗標來修改表達式行為。 例如:
i
m
s
c
此實作支援 RE2 之後正則表達式的 POSIX 標準,並且支援與大多數新式正則表示式引擎和工具相容的正則表達式語法 PCRE/PCRE2 類別。 正則表達式有不同的類型,例如 POSIX、ANSI、Perl 和 PCRE,其語法和功能不同。
需求
- SQL 用戶端工具,例如 Azure Data Studio、SQL Server Management Studio 或 Visual Studio Code。
- SQL 語法和查詢的基本知識。
- 對正則表達式語法和概念的基本瞭解。
FAQ
使用 regex 的效能影響為何?
Regex 查詢可能會對效能造成影響,取決於 regex 模式的複雜度、文本資料的大小,以及所涉及的資料行數量。 您可以使用執行計劃和統計數據來監視和優化 regex 查詢的效能。
已知問題、行為和限制
以下是此預覽版目前不支援的專案:
- LOB 資料類型(varchar(max) 或 nvarchar(max))適用於
string_expressions
- 記憶體優化 OLTP 資料表不支援正規表示式函數