- カテゴリ:
文字列とバイナリ関数 (一般)
INSERT¶
指定された位置から始まる指定された長さのサブ文字列を、新しい文字列またはバイナリ値で置き換えます。
この機能を INSERT DML コマンドと混同しないでください。
構文¶
INSERT( <base_expr>, <pos>, <len>, <insert_expr> )
引数¶
base_expr
文字を挿入/置換する文字列または BINARY 式です。
pos
文字の挿入を開始するオフセットです。これは0ベースではなく、1ベースです。つまり、文字列の最初の文字は、位置0ではなく位置1にあると見なされます。たとえば、文字列の先頭に挿入するには、
pos
を1に設定します。有効な値は、1から文字列の長さより1つ大きい値までです(この値を含む)。
pos
を文字列の長さより1つ大きく設定すると、操作は追加と同等になります。(これには、len
パラメーターが0である必要もあります。これは、最後の文字を過ぎた文字を削除しないようにするためです。)len
置き換える文字数です(
pos
から)。有効な値の範囲は、0からpos
、さらに文字列の終わりまでの文字数です。これが0の場合、既存の文字を削除せずに新しい文字を追加することを意味します。insert_expr
base_expr
に挿入する文字列です。この文字列が空で、len
がゼロより大きい場合、事実上の操作は削除になります(一部の文字は削除され、何も追加されません)。
使用上の注意¶
base_expr
とinsert_expr
は同じデータ型でなければなりません。両方が文字列(例: VARCHAR)か、両方がバイナリである必要があります。引数のいずれかが NULL の場合、戻り値は NULLです。
戻り値¶
base_expr
のコピーを作成し、 pos
で始まる len
文字を削除してから、 pos
で insert_expr
を挿入するのと同等の文字列または BINARY を返します。
元の入力 base_expr
は変更されません。関数は、個別の(変更された)コピーを返します。
例¶
これは簡単な例です。
SELECT INSERT('abc', 1, 2, 'Z') as STR; +-----+ | STR | |-----| | Zc | +-----+
この例は、置換文字列の長さが、置換されるサブ文字列の長さと異なる場合があることを示しています。
SELECT INSERT('abcdef', 3, 2, 'zzz') as STR; +---------+ | STR | |---------| | abzzzef | +---------+
これは、置換文字列が空の(関数は、開始位置から始まる指定された数の文字を削除し、文字を追加しない)場合に何が起こるかを示しています。
SELECT INSERT('abc', 2, 1, '') as STR; +-----+ | STR | |-----| | ac | +-----+
これは、元の文字列にある最後の文字の直後に文字を追加することにより、追加操作として INSERT
を使用します。
SELECT INSERT('abc', 4, 0, 'Z') as STR; +------+ | STR | |------| | abcZ | +------+
次のすべては、少なくとも1つの引数が NULL であるため、 NULLを返します。
SELECT INSERT(NULL, 1, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', NULL, 2, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, NULL, 'Z') as STR; +------+ | STR | |------| | NULL | +------+SELECT INSERT('abc', 1, 2, NULL) as STR; +------+ | STR | |------| | NULL | +------+