REGEXP_REPLACE

REGEXP_REPLACE 関数は、ソース・ストリング内で見つかった正規表現パターンのオカレンスを、指定した置換ストリングに置き換えて、ソース・ストリングを変更したものを戻します。

構文図を読む構文図をスキップする
>>-REGEXP_REPLACE--(--source-string--,--pattern-expression------>

>--+---------------------------------------------------------------------+--)-><
   '-,--replacement-string--+------------------------------------------+-'      
                            '-,--start--+----------------------------+-'        
                                        '-,--occurence--+----------+-'          
                                                        '-,--flags-'            

source-string
その中で検索が行われるストリングを指定する式。 式は、組み込み文字ストリング、グラフィック・ストリング、数値、日時のいずれかのデータ・タイプの値を戻す必要があります。 値が UTF-16 DBCLOB ではない場合、正規表現パターンを検索する前に、暗黙的に UTF-16 DBCLOB にキャストされます。 FOR BIT DATA 属性の文字ストリングと、バイナリー・ストリングはサポートされません。 ストリングの長さが 1 GB を超えてはなりません。
pattern-expression
検索パターンの正規表現ストリングを指定する式。 式は、組み込み文字ストリング、グラフィック・ストリング、数値、日時のいずれかのデータ・タイプの値を戻す必要があります。 値が UTF-16 DBCLOB ではない場合、正規表現パターンを検索する前に、暗黙的に UTF-16 DBCLOB にキャストされます。 FOR BIT DATA 属性の文字ストリングと、バイナリー・ストリングはサポートされません。 ストリングの長さが 32K を超えてはなりません。

有効な pattern-expression は、検索のパターンを記述する文字および制御文字のセットで構成されます。 有効な制御文字の説明については、正規表現の制御文字 を参照してください。

replacement-string
一致したサブストリングに対する置換ストリングを指定する式。 式は、組み込み文字ストリング、グラフィック・ストリング、数値、日時のいずれかのデータ・タイプの値を戻す必要があります。 値が UTF-16 DBCLOB ではない場合、正規表現パターンを検索する前に、暗黙的に UTF-16 DBCLOB にキャストされます。 FOR BIT DATA 属性の文字ストリングと、バイナリー・ストリングはサポートされません。 ストリングの長さが 32K を超えてはなりません。 replacement-string が指定されない場合、デフォルトは空ストリングです。

replacement-string の中には、置換テキストで使用する、検索でのキャプチャー・グループ・テキストの参照を含めることができます。 これらの参照の形式は '$n' または '¥n'33 です。ここで、n はキャプチャー・グループの番号で、0 はパターンに一致するストリング全体を表します。 n の値は、0 から 9 の範囲でなければならず、パターン内のキャプチャー・グループの数以下である必要があります。 例えば、'$2' または '¥2' を使用して、source-string の中で見つかった、pattern-expression で指定された 2 番目のキャプチャー・グループの内容を参照できます。 replacement-string に文字 '$' または '¥' のリテラル参照を含める必要がある場合は、必ず、文字 '¥' をリテラル参照の前に付けて、replacement-string が '¥$' または '¥¥' となるようにします。

start
検索が開始される source-string 内の位置を指定する式。 式は任意の組み込み数値、文字ストリング、またはグラフィック・ストリングのデータ・タイプの値を戻す必要があります。 引数は、関数を評価する前に INTEGER にキャストされます。INTEGER への変換について詳しくは、INTEGER または INTを参照してください。 整数の値は、1 以上でなければなりません。 整数の値が source-string の実際の長さより大きい場合、元のストリングが戻されます。
occurrence
source-string での pattern-expression のどのオカレンスを検索して置換するかを指定する式。 式は任意の組み込み数値、文字ストリング、またはグラフィック・ストリングのデータ・タイプの値を戻す必要があります。 引数は、関数を評価する前に INTEGER にキャストされます。INTEGER への変換について詳しくは、INTEGER または INTを参照してください。整数の値は、0 以上でなければなりません。 occurrence が指定されない場合、デフォルト値は 0 で、source-string 内の pattern-expression のすべてのオカレンスが置換されることを示します。
flags
パターン・マッチングの特性を制御するフラグを指定する式。式は、組み込み文字ストリングまたはグラフィック・ストリングのいずれかのデータ・タイプの値を戻す必要があります。FOR BIT DATA 属性の文字ストリングと、バイナリー・ストリングはサポートされません。 このストリングには、1 つ以上の有効なフラグ値を含めることができます。 フラグ値の組み合わせは有効でなければなりません。 空ストリングは、値「c」と同じです。

有効なフラグ文字の説明については、正規表現のフラグ値 を参照してください。

この関数の結果はストリングです。 置換対象のパターンのオカレンスがなく、どの引数も NULL でない場合、元のストリングが戻されます。 ストリングのデータ・タイプは、結果が常に可変長ストリングであることを除けば、最初の引数と 3 番目の引数を連結した場合と同じです。 詳しくは、連結演算子を参照してください。

結果のデータ・タイプの長さ属性は、source-stringreplacement-string の長さ属性を基に、以下の計算で求められます。すなわち、MIN(MaxTypeLen, LAS+(LAS+1)*LAR) です。ここで、MaxTypeLen は結果のデータ・タイプの最大長属性、 LAS は source-string のデータ・タイプの長さ属性、LAR は replacement-string のデータ・タイプの長さ属性です。 replacement-string が指定されない場合、LAR の値は 0 になります。 結果ストリングの実際の長さが戻りデータ・タイプの最大長を超える場合は、エラーが戻されます。

結果の CCSID は、source-stringreplacement-string の CCSID によって決まります。 結果の CCSID は、最初の引数と 3 番目の引数を連結した場合と同じです。 詳しくは、結果のデータ・タイプに関する規則を参照してください。

REGEXP_REPLACE 関数の引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。引数のいずれかが NULL の場合、その結果は NULL 値です。

前提条件: REGEXP_REPLACE 関数を使用するには、 International Components for Unicode (ICU) オプションがインストールされていなければなりません。

処理: 正規表現の処理は、 International Components for Unicode (ICU) 正規表現インターフェースを使用して行われます。 詳しくは、http://userguide.icu-project.org/strings/regexp を参照してください。

  • 大文字小文字を区別して検索し、パターン 'R.d' の 2 番目のオカレンスを 'Orange' に置き換えます。
    SELECT REGEXP_REPLACE(
      'Red Yellow RED Blue Red Green Blue',
      'R.d','Orange',1,2,'c') 
    FROM sysibm.sysdummy1
    結果は、'Red Yellow RED Blue Orange Green Blue' になります。