次の方法で共有


正規表現のプレビュー

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

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

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

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

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

例えば次が挙げられます。

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

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

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

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

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

1 文字の式

単一文字式の種類 例示
改行を含む可能性のある任意の文字 (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 のみ) 説明
\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:]] 16 進数 ([0-9A-Fa-f])

リテラル文字

  • 手紙
  • 数値
  • シンボル

メタ文字

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

グループ

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

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

フラグ

フラグを使用して式の動作を変更します。 例えば次が挙げられます。

  • i
  • m
  • s
  • c

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

要求事項

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

よくあるご質問

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

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

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

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

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