適用対象: SQL Server 2025 (17.x) プレビュー
Azure SQL Database
Azure SQL Managed Instance
SQL データベース
この記事では、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 テーブルでは正規表現関数はサポートされていません