変更の始まり

OVERLAY

ソース・ストリング開始桁 から 長さ 文字を削除し、ソース・ストリング開始桁 の位置に 挿入ストリング を挿入したストリングを戻します。

構文図を読む構文図をスキップする
>>-OVERLAY--(--source-string--+-PLACING--insert-string--FROM--start--+-------------+-+--)-><
                              |                                      '-FOR--length-' |      
                              |                             .-,--1------.            |      
                              '-,--insert-string--,--start--+-----------+------------'      
                                                            '-,--length-'                   

source-string
ソース・ストリングを指定する式。 source-string には、任意の組み込み数値、ストリング、または日時式を指定できます。 これは、挿入ストリング と互換性のあるものでなければなりません。 データ・タイプの互換性についての詳細は、割り当ておよび比較を参照してください。 数値引数または日時引数は、 関数を評価する前に、現行サーバーでデフォルト SBCS CCSID である CCSID を使用して VARCHAR にキャストされます。数値または日時からさまざまな文字ストリングへの変換について詳しくは、VARCHAR を参照してください。ストリングの実際の長さはゼロより大きくなくてはなりません。

OVERLAY 関数は、引数の順序が異なり、length がオプションである点を除けば、INSERT 関数と同一です。

insert-string
ソース・ストリング に挿入する、 開始桁 で示される位置から開始するストリングを指定する式。 insert-string には、任意の組み込み数値、ストリング、または日時式を指定できます。 これは、ソース・ストリング と互換性のあるものでなければなりません。 データ・タイプの互換性についての詳細は、割り当ておよび比較を参照してください。 数値引数または日時引数は、 関数を評価する前に、現行サーバーでデフォルト SBCS CCSID である CCSID を使用して VARCHAR にキャストされます。数値または日時からさまざまな文字ストリングへの変換について詳しくは、VARCHAR を参照してください。
start
任意の組み込み数値、文字ストリング、 またはグラフィック・ストリングのデータ・タイプの値を戻す式。 値がタイプ INTEGER でない場合、その値は関数を評価する前に暗黙的に INTEGER にキャストされます。整数は、文字の削除と別のストリングの挿入を開始するソース・ストリング 内の開始文字を指定します。 整数の値は、1 からソース・ストリング の長さに 1 を加えた数の範囲でなければなりません。
length
任意の組み込み数値、文字ストリング、 またはグラフィック・ストリングのデータ・タイプの値を戻す式。 値がタイプ INTEGER でない場合、その値は関数を評価する前に暗黙的に INTEGER にキャストされます。この整数は、ソース・ストリング から削除される、開始桁 で示される文字位置から始まる文字数を指定します。 整数の値は、0 からソース・ストリング の長さまでの範囲でなければなりません。

関数の結果のデータ・タイプは、1 番目と 2 番目の引数のデータ・タイプによって決まります。 結果のデータ・タイプは、結果は常に可変長ストリングであることを除けば、 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 文字に制限されます。
      SELECT OVERLAY('INSERTING', 'IS', 4, 2),
             OVERLAY('INSERTING', 'IS', 4, 0),
             OVERLAY('INSERTING', '', 4, 2)
        FROM SYSIBM.SYSDUMMY1
    この例は、「INSISTING」、「INSISERTING」、および「INSTING」を戻します。
  • 前の例では、あるテキストの中にテキストを挿入する方法を示しました。 この例は、開始点 (start) として 1 を 使用して、テキストの前に他のテキストを挿入する方法を示しています。
      SELECT OVERLAY('INSERTING', 'XX', 1, 0),
             OVERLAY('INSERTING', 'XX', 1, 1),
             OVERLAY('INSERTING', 'XX', 1, 2),
             OVERLAY('INSERTING', 'XX', 1, 3)
        FROM SYSIBM.SYSDUMMY1
    この例は、「XXINSERTING」、「XXNSERTING」、「XXSERTING」、および「XXERTING」を戻します。
  • 次の例は、あるテキストの後ろにテキストを挿入する方法を示しています。 ストリング「ABCABC」の末尾に「XX」を追加します。 ソース・ストリングの長さは 6 文字なので、開始位置を 7 (1 + ソース・ストリング の長さ) に設定します。
      SELECT OVERLAY('ABCABC', 'XX', 7, 0)
        FROM SYSIBM.SYSDUMMY1
    この例は、「ABCABCXX 」を戻します。
  • 以下の例では、ストリング 'Hegelstraße' を 'Hegelstrasse' に変更します。
      SELECT OVERLAY('Hegelstraße', 'ss', 10, 1)
        FROM SYSIBM.SYSDUMMY1
    この例は「Hegelstrasse」を戻します。
  • 変数 UTF8_VAR は UTF8 として定義され、UTF16_VAR は UTF16 として定義されているとします。 この両方に Unicode ストリング '&N~AB' が含まれているとします。ここで、'&' は音符のト音記号、'~' は結合チルド文字です。
      SELECT OVERLAY(UTF8_VAR, 'C', 1),
             OVERLAY(UTF8_VAR, 'C', 5),
             OVERLAY(UTF16_VAR, 'C', 1),
             OVERLAY(UTF16_VAR, 'C', 5)
        FROM SYSIBM.SYSDUMMY1
    この例は、'CN~AB'、'&N~AC'、'CN~AB'、および '&N~AC' を戻します。
変更の終わり