次の方法で共有


REGEXP_SUBSTR (Transact-SQL) プレビュー

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

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

正規表現パターンに一致する文字列の部分文字列を 1 回返します。 一致するものが見つからない場合は、 NULLを返します。

REGEXP_SUBSTR
     (
      string_expression,
      pattern_expression [, start [, occurrence [, flags [, group ] ] ] ]
     )

論争

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 バイトがサポートされています。

を開始

検索文字列内の検索の開始位置を指定します。 任意。 型が int または bigint です

番号付けは 1 から始まります。つまり、式の最初の文字は 1 され、値は >= 1する必要があります。 開始式が 1未満の場合は、エラーを返します。 開始式が string_expressionの長さを超える場合、関数は NULLを返します。 既定値は 1です。

事象

検索または置換するソース文字列内のパターン式の出現を指定する式 (正の整数)。 既定値は 1 です。 string_expressionの最初の文字を検索します。 正の整数 n の場合は、pattern_expressionの最初の出現に続く最初の文字で始まる n番目の出現箇所を検索します。

フラグ

一致を検索するために使用する修飾子を指定する 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)

返すstring_expression内の位置を決定するpattern_expressionのキャプチャ グループ (部分式) を指定します。 キャプチャ グループ (部分式) は、かっこで囲まれたパターンのフラグメントであり、入れ子にすることができます。 キャプチャ グループには、左かっこが表示される順序で番号が付けられます。 グループのデータ型は整数であり、値は 0 以上である必要があり、pattern_expressionのキャプチャ グループ (部分式) の数を超えてはなりません。 既定のグループ値は 0 です。これは、位置がパターン全体に一致する文字列に基づいていることを示します。

戻り値

文字列

例示

メール アドレスからドメイン名を抽出します。

SELECT REGEXP_SUBSTR(EMAIL, '@(.+)$', 1, 1, 'i', 1) AS DOMAIN
FROM CUSTOMERS;

母音で始まる文の最初の単語を見つけます。

SELECT REGEXP_SUBSTR(COMMENT, '\b[aeiou]\w*', 1, 1, 'i') AS WORD
FROM FEEDBACK;

クレジット カード番号の最後の 4 桁を取得します。

SELECT REGEXP_SUBSTR(CARD_NUMBER, '\d{4}$') AS LAST_FOUR
FROM PAYMENTS;