適用対象: SQL Server 2025 (17.x) プレビュー
Azure SQL Database
Azure SQL Managed Instance
SQL データベース
注
この記事で紹介しているテクノロジはプレビュー機能であり、「Microsoft Azure プレビューの追加利用規約」に従うことを条件として提供されます。
正規表現パターンの出現が見つかった置換文字列に置き換えられた変更されたソース文字列を返します。 一致が見つからない場合、関数は元の文字列を返します。
REGEXP_REPLACE
(
string_expression,
pattern_expression [, string_replacement [, start [, occurrence [, flags ] ] ] ]
)
論争
string_expression
文字列の式。
文字列の定数、変数、または列を指定できます。
データ型: char、 nchar、 varchar、または nvarchar。
注
REGEXP_LIKE
、REGEXP_COUNT
、およびREGEXP_INSTR
関数は、string_expression パラメーターに対して最大 2 MB の LOB 型 (varchar(max) と nvarchar(max)) をサポートします。
pattern_expression
照合する正規表現パターン。 通常はテキスト リテラルです。
データ型: char、 nchar、 varchar、または nvarchar。 pattern_expression では、最大文字数 8,000 バイトがサポートされています。
string_replacement
一致する部分文字列の置換文字列を指定し、パターンで一致する部分文字列を置き換える文字列式。 string_replacementには、char、varchar、nchar、および nvarchar データ型を指定できます。 空の文字列 (' '
) が指定されている場合、関数は一致するすべてのパターンを削除し、結果の文字列を返します。 既定の置換文字列は空の文字列 (' '
) です。
string_replacementには、パターンの n 番目のかっこ付きグループ (部分式) に一致するソース部分文字列を挿入する必要があることを示す \n(n は 1 から 9) を含めることができます。また、パターン全体に一致する部分文字列を挿入する必要があることを示す &
を含めることができます。 置換テキストにリテラル円記号を挿入する必要がある場合は、\ を書き込みます。
次に例を示します。
REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) \2-\3')
戻り値:
(123) 456-7890
\n
で指定されたstring_replacement
がpattern_expression内のグループの数より大きい場合、関数は値を無視します。
例えば次が挙げられます。
REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) (\4)-xxxx')
戻り値:
(123) ()-xxxx
を開始
検索文字列内の検索の開始位置を指定します。 任意。 型が int または bigint です。
番号付けは 1 から始まります。つまり、式の最初の文字は 1
され、値は >= 1
する必要があります。 開始式が 1
未満の場合は、エラーを返します。 開始式が string_expressionの長さを超える場合、関数は string_expressionを返します。 既定値は 1
です。
事象
検索または置換するソース文字列内のパターン式の出現を指定する式 (正の整数)。 既定値は 1
です。
string_expressionの最初の文字を検索します。 正の整数n
の場合は、pattern_expressionの最初の出現に続く最初の文字で始まるnth
の出現箇所を検索します。
フラグ
一致を検索するために使用する修飾子を指定する 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 ) |
戻り値
表現。
例示
a
またはe
のすべての出現箇所を製品名のX
に置き換えます。
SELECT REGEXP_REPLACE(PRODUCT_NAME, '[ae]', 'X', 1, 0, 'i')
FROM PRODUCTS;
cat
またはdog
の最初の出現箇所を製品の説明のpet
に置き換える
SELECT REGEXP_REPLACE(PRODUCT_DESCRIPTION, 'cat|dog', 'pet', 1, 1, 'i')
FROM PRODUCTS;
電話番号の最後の 4 桁をアスタリスクに置き換える
SELECT REGEXP_REPLACE(PHONE_NUMBER, '\d{4}$', '****')
FROM CUSTOMERS;