次の方法で共有


REGEXP_MATCHES (Transact-SQL) プレビュー

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

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

正規表現パターンと文字列に一致するキャプチャされた部分文字列のテーブルを返します。 一致するものが見つからない場合、関数は行を返しません。

REGEXP_MATCHES
     (
      string_expression,
      pattern_expression [, flags ]
     )

データベース互換性レベル 170 が必要です。 データベース互換性レベルを設定するには、 ALTER DATABASE (Transact-SQL) 互換性レベルを確認します。

論争

string_expression

文字列の式。

文字列の定数、変数、または列を指定できます。

データ型: charncharvarchar、または nvarchar

REGEXP_LIKEREGEXP_COUNT、およびREGEXP_INSTR関数は、string_expression パラメーターに対して最大 2 MB の LOB 型 (varchar(max)nvarchar(max)) をサポートします。

pattern_expression

照合する正規表現パターン。 通常はテキスト リテラルです。

データ型: charncharvarchar、または nvarcharpattern_expression では、最大文字数 8,000 バイトがサポートされています。

フラグ

一致を検索するために使用する修飾子を指定する 1 つ以上の文字。 型は varchar または char で、最大 30 文字です。

たとえば、ims のようにします。 既定値は cです。 空の文字列 (' ') が指定されている場合は、既定値 ('c')として扱われます。 cまたはその他の文字式を指定します。 フラグに複数の矛盾する文字が含まれている場合、SQL Server は最後の文字を使用します。

たとえば、正規表現 ic 指定すると、大文字と小文字が区別される一致が返されます。

サポートされているフラグ値に記載されている文字以外の文字が 値に含まれている場合、クエリは次の例のようなエラーを返します。

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
サポートされているフラグ値
フラグ 説明
i 大文字と小文字を区別しない (既定の false)
m 複数行モード: 開始/終了テキストに加えて、 ^$ 一致の開始/終了行 (既定の false)
s . \nと一致させる (既定のfalse)
c 大文字と小文字が区別されます (既定の true)

返品ポリシー

次のように表形式の結果を返します。

列名 データの種類 説明
match_id ビギント 一致する単語のシーケンス。
start_position int 開始インデックス位置。
end_position int 終了インデックスの位置。
match_value string_expressionまたは varchar と同じ型 一致する式。
substring_matches json 一致を記述する JSON ドキュメント。

例示

'Learning #AzureSQL #AzureSQLDB'文字の後に 1 つ以上の英数字 (#) またはアンダースコア (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で始まり、その後にちょうど 2 文字の文字列が続く文字列と一致する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}]