INSERT
ソース・ストリング の開始桁 から 長さ 文字を削除し、ソース・ストリング の開始桁 の位置に 挿入ストリング を挿入したストリングを戻します。
- source-string
- ソース・ストリングを指定する式。 ソース・ストリング には、任意の組み込み数値またはストリング式を指定できます。 これは、挿入ストリング と互換性のあるものでなければなりません。 データ・タイプの互換性についての詳細は、割り当ておよび比較を参照してください。 数値引数は、関数を評価する前に文字ストリングにキャストされます。 数値から文字ストリングへの変換の詳細については、VARCHARを参照してください。 ストリングの実際の長さはゼロより大きくなくてはなりません。
- start
- BIGINT、INTEGER、または SMALLINT の組み込みデータ・タイプを戻す式。 整数は、文字の削除と別のストリングの挿入を開始するソース・ストリング 内の開始文字を指定します。 整数の値は、1 からソース・ストリング の長さに 1 を加えた数の範囲でなければなりません。
- length
- BIGINT、INTEGER、または SMALLINT の組み込みデータ・タイプを戻す式。 この整数は、ソース・ストリング から削除される、開始桁 で示される文字位置から始まる文字数を指定します。 整数の値は、0 からソース・ストリング の長さまでの範囲でなければなりません。
- insert-string
- ソース・ストリング に挿入する、 開始桁 で示される位置から開始するストリングを指定する式。 挿入ストリング には、任意の組み込み数値またはストリング式を指定できます。 これは、ソース・ストリング と互換性のあるものでなければなりません。 データ・タイプの互換性についての詳細は、割り当ておよび比較を参照してください。 数値引数は、関数を評価する前に文字ストリングにキャストされます。 数値から文字ストリングへの変換の詳細については、VARCHARを参照してください。 ストリングの実際の長さは 0 以上でなければなりません。
関数の結果のデータ・タイプは、1 番目と 4 番目の引数のデータ・タイプによって異なります。 結果のデータ・タイプは、結果は常に可変長ストリングであることを除けば、 2 つの引数を連結した場合と同じです。 詳しくは、ストリングを結合する演算に適用される変換規則を参照してください。
結果の長さ属性は、引数によって次のように異なります。
- 開始桁 と長さ が定数の場合、結果の長さ属性は次のとおりです。
各値は、次のとおりです。L1 - MIN((L1-V2 + 1), V3) + L4
L1 はソース・ストリングの長さ属性 V2 は次のようにソース・ストリングのエンコード・スキーマに依存します。 - ソース・ストリングが UTF-8 の場合は値 MIN(L1+1,start*3) - ソース・ストリングが混合データの場合は値 MIN(L1+1,(start-1)*2.5+4) 上記以外の場合は値 start V3 は長さの値 L4 は挿入ストリングの長さ属性
- それ以外の場合は、結果の長さ属性は、ソース・ストリング の長さ属性と 挿入ストリング の長さ属性を足したものになります。
結果の長さ属性が結果のデータ・タイプの最大長を超える場合は、エラーが戻されます。
結果の実際の長さは、次のとおりです。
A1 - MIN((A1 -V2 + 1), V3) + A4
各値は、次のとおりです。
A1 はソース・ストリングの実際の長さ
V2 は開始桁の値
V3 は長さの値
A4 は挿入ストリングの実際の長さ
結果ストリングの実際の長さが結果のデータ・タイプの最大長を超える場合は、エラーが戻されます。
引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数のいずれかが NULL の場合、その結果は NULL 値です。
結果の CCSID は、ソース・ストリング と挿入ストリング の CCSID によって決定されます。 結果 CCSID は、2 つの引数を連結した場合と同じです。 詳しくは、ストリングを結合する演算に適用される変換規則を参照してください。
例
- 次の例は、ストリング「INSERTING」をどのように他のストリングに変更できるかを示しています。
CHAR 関数を使用すると、結果ストリングの長さが 10 文字に制限されます。
この例は、「INSISTING 」、 「INSISERTIN」、および「INSTING 」を戻します。.SELECT INSERT('INSERTING', 4, 2, 'IS'), INSERT('INSERTING', 4, 0, 'IS'), INSERT('INSERTING', 4, 2, '') FROM SYSIBM.SYSDUMMY1
- 前の例では、あるテキストの中にテキストを挿入する方法を示しました。
この例は、開始点 (start) として 1 を
使用して、テキストの前に他のテキストを挿入する方法を示しています。
この例は、「XXINSERTIN」、「XXNSERTING」、「XXSERTING 」、および「XXERTING」を戻します。SELECT INSERT('INSERTING', 1, 0, 'XX'), INSERT('INSERTING', 1, 1, 'XX'), INSERT('INSERTING', 1, 2, 'XX'), INSERT('INSERTING', 1, 3, 'XX') FROM SYSIBM.SYSDUMMY1
- 次の例は、あるテキストの後ろにテキストを挿入する方法を示しています。
ストリング「ABCABC」の末尾に「XX」を追加します。
ソース・ストリングの長さが 6 文字なので、
開始位置を 7 (ソース・ストリングに 1 を足した数) に設定します。
この例は、「ABCABCXX 」を戻します。SELECT INSERT('ABCABC', 7, 0, 'XX') FROM SYSIBM.SYSDUMMY1