REPLACE スカラー関数
REPLACE 関数は、source-string 内の search-string のオカレンスをすべて replace-string で置き換えます。 search-string が source-string 内に見付からない場合、source-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-string、search-string、および replace-string のデータ・タイプによって次のように決まります。
- source-string が文字ストリングであれば VARCHAR。 結果のコード化スキームは、source-string
と同じです。 結果の CCSID は、引数によって次のように決まります。
- source-string、search-string、または replace-string がビット・データであれば、結果はビット・データ。
- source-string、search-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-string、search-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))になります。
- L1 は source-string の長さ属性
- L2 は、検索ストリングがストリング定数の場合は、search-string の長さ属性。 それ以外の場合、L2 は 1 です。
- L3 はreplace-string の長さ属性
- VARCHAR または VARBINARY の場合:
結果が文字列またはバイナリ文字列の場合、結果の長さ属性は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」を除去するのと同じです。
結果は、ストリング「XYZ」になります。SELECT REPLACE('ABCXYZ','ABC','') FROM SYSIBM.SYSDUMMY1; - 例 3
- ストリング「ABCCABCC」のストリング「ABC」を「AB」に置換します。 この例は、
置き換えられるべきストリング (このケースでは「ABC」) が
依然結果に含まれることを示しています。この理由は、置換対象のストリングの
すべてのオカレンスを識別してから、すべての置換が行われるからです。
SELECT REPLACE('ABCCABCC','ABC','AB') FROM SYSIBM.SYSDUMMY1;結果はストリング「ABCABC」になります。
