REPLACE スカラー関数

REPLACE 関数は、source-string 内の search-string のオカレンスをすべて replace-string で置き換えます。 search-stringsource-string 内に見付からない場合、source-string は変更されずに戻されます。

構文図を読むビジュアルシンタックスダイアグラムをスキップするREPLACE(ソース文字列 ,search-string ,置換文字列 )

スキーマは SYSIBM です。

ソース文字列
ソース・ストリングを指定する式。 この式は、LOB 以外の、組み込みの文字ストリング・データ・タイプ、グラフィック・ストリング・データ・タイプ、またはバイナリー・ストリング・データ・タイプの値を戻す必要があります。値は空ストリングであってはなりません。

引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。

ソース文字列の実際の長さは、文字列およびバイナリ文字列の場合は32764バイト以下、グラフィック文字列の場合は16382バイト以下でなければなりません。

search-string
ソース・ストリングから除去するストリングを指定する式。 この式は、LOB 以外の、組み込みの文字ストリング・データ・タイプ、グラフィック・ストリング・データ・タイプ、またはバイナリー・ストリング・データ・タイプのデータ・タイプの値を戻す必要があります。値は空ストリングであってはなりません。

引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。

変更の開始検索文字列の実際の長さは、 検索文字列のCCISDが Unicode DBCSでない限り、文字列およびバイナリ文字列の場合は4000バイト以下、グラフィック文字列の場合は2000バイト以下でなければなりません。 CCSIDがUnicode DBCSの場合、実際の長さは16382以下でなければなりません。変更の終わり

置換文字列
置き換えストリングを指定する式。 この式は、LOB 以外の、組み込みの文字ストリング・データ・タイプ、グラフィック・ストリング・データ・タイプ、またはバイナリー・ストリング・データ・タイプの値を戻す必要があります。

引数を数値データ・タイプにすることもできます。 数値引数は、暗黙的に VARCHAR データ・タイプにキャストされます。

置換文字列の実際の長さは、文字列およびバイナリ文字列の場合は32764バイト以下、グラフィック文字列の場合は16382バイト以下でなければなりません。

replace-string が指定されていない場合、または空文字列の場合、ソース文字列から削除された文字列は置き換えられません。

この 3 つの引数のデータ・タイプには互換性がなければなりません。 式の CCSID セットが異なる場合、式は source-string の CCSID セットに変換されます。

関数の結果のデータ・タイプは、source-stringsearch-string、および replace-string のデータ・タイプによって次のように決まります。

  • source-string が文字ストリングであれば VARCHAR。 結果のコード化スキームは、source-string と同じです。 結果の CCSID は、引数によって次のように決まります。
    • source-stringsearch-string、または replace-string がビット・データであれば、結果はビット・データ。
    • source-stringsearch-string、および replace-string がすべて SBCS Unicode データであれば、結果の CCSID は SBCS Unicode データの CCSID。
    • source-string が SBCS Unicode データであり、search-string または replace-string が SBCS Unicode データでない場合、結果の CCSID は Unicode データの混合 CCSID。
    • それ以外の場合、結果の CCSID は source-string の CCSID に対応する混合 CCSID。 ただし、入力が EBCDIC または ASCII で、混合に対応するシステム CCSID がない場合、結果の CCSID は source-string の CCSID。
  • source-string がグラフィックであれば VARGRAPHIC。 結果のコード化スキームは、source-string と同じです。 結果の CCSID は source-string の CCSID と同じです。
  • source-stringsearch-string、および replace-string がバイナリー・ストリングであれば VARBINARY。

結果の長さ属性は、引数によって異なります。

  • replace-string の長さ属性が search-string の長さ属性以下の場合、結果の長さ属性は source-string の長さ属性になります。
  • replace-string の長さ属性が search-string の長さ属性より大きい場合、結果の長さ属性は、次のように、結果のデータ・タイプによって決定されます。
    • VARCHAR または VARBINARY の場合:
      • L1 < = 4000 の場合、結果の長さ属性は MIN(4000, (L3*(L1/L2)) + MOD(L1,L2))
      • そうでなければ、結果の長さ属性は、MIN(32764, (L3*(L1/L2)) + MOD(L1,L2))になります。
    • VARGRAPHIC の場合:
      • L1 < = 2000 の場合、結果の長さ属性は MIN(2000, (L3*(L1/L2)) + MOD(L1,L2))
      • そうでなければ、結果の長さ属性は、MIN(16382, (L3*(L1/L2)) + MOD(L1,L2))になります。
    ここで、
    • L1source-string の長さ属性
    • L2 は、検索ストリングがストリング定数の場合は、search-string の長さ属性。 それ以外の場合、L2 は 1 です。
    • L3replace-string の長さ属性

結果が文字列またはバイナリ文字列の場合、結果の長さ属性は32764 を超えてはなりません。 結果がグラフィック文字列の場合、結果の長さ属性は16382 を超えてはなりません。

結果の実際の長さは、source-string の実際の長さに、 replace-string の実際の長さを source-string に存在する search-string のオカレンス数で乗算した値を加算し、search-string の長さを減算した値になります。 結果ストリングの実際の長さが、戻りデータ・タイプの最大値を超えた場合、 エラーが発生します。

結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。

例 1
ストリング「DINING」の文字「N」のすべての出現箇所を「VID」に置換します。 CHAR 関数を使用して、出力を 10 バイトに制限します。
   SELECT CHAR(REPLACE('DINING','N','VID'),10)
     FROM SYSIBM.SYSDUMMY1;

結果は 'DIVIDIVIDG' というストリングになります。

例 2
ストリング「ABCXYZ」のストリング「ABC」を空ストリングで置換します。 これは、ストリングから「ABC」を除去するのと同じです。
   SELECT REPLACE('ABCXYZ','ABC','')
     FROM SYSIBM.SYSDUMMY1;
結果は、ストリング「XYZ」になります。
例 3
ストリング「ABCCABCC」のストリング「ABC」を「AB」に置換します。 この例は、 置き換えられるべきストリング (このケースでは「ABC」) が 依然結果に含まれることを示しています。この理由は、置換対象のストリングの すべてのオカレンスを識別してから、すべての置換が行われるからです。
   SELECT REPLACE('ABCCABCC','ABC','AB')
     FROM SYSIBM.SYSDUMMY1;

結果はストリング「ABCABC」になります。