次の方法で共有


正規表現のプレビュー

適用対象:SQL Server 2025 (17.x) プレビュー Azure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric Preview の SQL データベース

この記事では、SQL Server の正規表現について説明します。

Note

この記事で紹介しているテクノロジはプレビュー機能であり、「Microsoft Azure プレビューの追加利用規約」に従うことを条件として提供されます。

正規表現 (正規表現) は、テキストの検索パターンを定義する文字のシーケンスです。 正規表現は、パターン マッチング、データ検証、データ変換、クエリなど、さまざまなタスクに一般的に使用されます。 複雑なデータ操作を検索、操作、処理するための柔軟で効率的な方法が提供されます。

Note

正規表現は、 Always-up-to-date 更新ポリシーで構成された Azure SQL Managed Instance で使用できます。

正規表現のこの実装は、 RE2 正規表現ライブラリに基づいています。 詳細については、「 RE2 正規表現構文」を参照してください。

For example:

Function Description
REGEXP_LIKE テキスト入力が正規表現パターンと一致するかどうかを示す、ブール値を返します。
REGEXP_REPLACE 正規表現パターンの出現が見つかった箇所で置換文字列に置き換えられた、変更済みのソース文字列を返します。
REGEXP_SUBSTR 正規表現パターンに基づいて文字列の一部を抽出します。

正規表現パターンと一致する部分文字列の N 番目の出現箇所を返します。
REGEXP_INSTR 指定されたオプションに応じて、一致する部分文字列の開始位置または終了位置を返します。
REGEXP_COUNT 文字列内で正規表現パターンが発生した回数のカウントを返します。
REGEXP_MATCHES 正規表現パターンと一致するキャプチャされた部分文字列のテーブルを文字列に返します。 一致するものが見つからない場合、関数は行を返しません。
REGEXP_SPLIT_TO_TABLE 正規表現パターンで区切られた、分割された文字列のテーブルを返します。 パターンと一致するものがない場合、この関数は文字列を返します。

正規表現は、特別な意味と関数を持つリテラル文字とメタ文字で構成できます。

単純な正規表現は、1 つのリテラル文字です。 文字は、メタ文字を除き、それ自体と一致します。 メタ文字には、 *+?()、または |が含まれます。 メタ文字と照合するには、バックスラッシュでエスケープします。 たとえば、 \* はリテラルアスタリスク (*) 文字と一致します。

受け入れ可能な正規表現文字

単一文字式

単一文字式の種類 Examples
任意の文字 (場合によっては改行を含む) (s=true) .
文字クラス [xyz]
否定の文字クラス [^xyz]
Perl 文字クラス \d
否定の Perl 文字クラス \D
ASCII 文字クラス [[:alpha:]]
否定の ASCII 文字クラス [[:^alpha:]]
Unicode 文字クラス (1 文字の名前) \pN
Unicode 文字クラス \p{Greek}
否定の Unicode 文字クラス (1 文字の名前) \PN
否定の Unicode 文字クラス \P{Greek}

Perl 文字クラス

次の表に、現在サポートされている Perl 文字クラスを示します。

Perl 文字クラス (すべて ASCII のみ) Description
\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 文字クラス Description
[[: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:]] 16 進数の数字 ( [0-9A-Fa-f])

Literal characters

  • Letters
  • Numbers
  • Symbols

Metacharacters

  • * 前の文字の 0 回以上の出現に一致します。
  • ^ 行の先頭と一致します

Groupings

次の方法でパターンの一部をグループ化してキャプチャします。

  • 括弧 ( )
  • 角かっこ [ ]
  • 中かっこ { }

Flags

フラグを使用して式の動作を変更します。 For example:

  • i
  • m
  • s
  • c

この実装では、RE2 に続く正規表現の POSIX 標準がサポートされ、ほとんどの最新の正規表現エンジンやツールと互換性のある正規表現構文の PCRE/PCRE2 フレーバーがサポートされています。 POSIX、ANSI、Perl、PCRE など、さまざまな種類の正規表現があり、構文と機能が異なります。

Requirements

  • Azure Data Studio、SQL Server Management Studio、Visual Studio Code などの SQL クライアント ツール。
  • SQL 構文とクエリに関する基本的な知識。
  • 正規表現の構文と概念の基本的な理解。

FAQ

正規表現を使用した場合のパフォーマンスへの影響は何ですか?

正規表現クエリは、正規表現パターンの複雑さ、テキスト データのサイズ、関係する行数に応じてパフォーマンスに影響を与える可能性があります。 実行プランと統計を使用して、正規表現クエリのパフォーマンスを監視および最適化できます。

既知の問題、動作、および制限事項

このプレビューでは現在サポートされていない項目を次に示します。

  • の LOB データ型 (varchar(max) または string_expressions)
  • メモリ最適化 OLTP テーブルでは正規表現関数はサポートされていません