- カテゴリ:
REGEXP_REPLACE¶
指定されたパターン(またはパターンのすべての出現)が削除されたか、置換文字列に置き換えられたサブジェクトを返します。
文字列関数(正規表現) もご参照ください。
構文¶
REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )
引数¶
必須:
subject
一致を検索する文字列です。
pattern
一致するパターンです。
パターンの指定に関するガイドラインについては、 文字列関数(正規表現) をご参照ください。
オプション:
replacement
パターンと一致したサブ文字列を置き換える文字です。空の文字列が指定されている場合、関数は一致したパターンをすべて削除し、結果の文字列を返します。
デフォルト:
''
(空の文字列)。position
関数が一致の検索を開始する文字列の先頭からの文字数です。
デフォルト:
1
(一致の検索は左側の最初の文字から始まります)occurrence
置換するパターンの出現を指定します。
0
が指定されている場合、すべての出現箇所が置き換えられます。デフォルト:
0
(すべての出現)parameters
一致の検索に使用されるパラメーターを指定する1つ以上の文字の文字列です。サポートされている値:
パラメーター
説明
c
大文字と小文字を区別する一致
i
大文字と小文字を区別しない一致
m
複数行モード
e
部分一致を抽出
s
POSIX wildcard character
.
matches\n
デフォルト:
c
詳細については、 正規表現のパラメーターの指定 をご参照ください。
戻り値¶
VARCHAR 型の値を返します。
一致するものが見つからない場合、元のサブジェクトを返します。
いずれかの引数が NULL の場合は NULL を返します。
使用上の注意¶
置換文字列には、グループをキャプチャするためのバックリファレンス(例えば、パターンのサブ式)を含めることができます。キャプチャグループは、括弧(
( )
)で囲まれた正規表現です。キャプチャグループの最大数は9です。バックリファレンスは、キャプチャグループ内の式と一致します。バックリファレンスの形式は
n
で、n
は0から9までの値であり、キャプチャグループの一致するインスタンスを参照します。詳細については、 例 (このトピック内)をご参照ください。現在、括弧(
( )
)と角括弧([ ]
)は、リテラル文字列として解析するために二重エスケープする必要があります。次の例は、括弧を削除する方法を示しています。
SELECT REGEXP_REPLACE('Customers - (NY)','\\(|\\)','') AS customers;
+----------------+ | CUSTOMERS | |----------------| | Customers - NY | +----------------+
追加の使用上の注意については、正規表現関数の 一般的な使用上の注意 をご参照ください。
照合順序の詳細¶
Arguments with collation specifications are currently not supported.
例¶
次の例では、文字列内のすべてのスペースをスペース無しに置き換えます(つまり、すべてのスペースが削除されます)。
SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
'( ){1,}',
'') AS result;
+------------------------------------------+
| RESULT |
|------------------------------------------|
| Itwasthebestoftimes,itwastheworstoftimes |
+------------------------------------------+
次の例では、文字列 times
をマッチングし、文字列 days
に置き換えます。マッチングは、文字列内の最初の文字から始まり、部分文字列の2番目の出現を置き換えます。
SELECT REGEXP_REPLACE('It was the best of times, it was the worst of times',
'times',
'days',
1,
2) AS result;
+----------------------------------------------------+
| RESULT |
|----------------------------------------------------|
| It was the best of times, it was the worst of days |
+----------------------------------------------------+
次の例では、後方参照を使用して文字列 firstname middlename lastname
を lastname, firstname middlename
として再配置し、 lastname
と firstname
の間にコンマを挿入します。
SELECT REGEXP_REPLACE('firstname middlename lastname',
'(.*) (.*) (.*)',
'\\3, \\1 \\2') AS name_sort;
+--------------------------------+
| NAME_SORT |
|--------------------------------|
| lastname, firstname middlename |
+--------------------------------+