カテゴリ:

文字列とバイナリ関数 (一般)

INSERT

指定された位置から始まる指定された長さのサブ文字列を、新しい文字列またはバイナリ値で置き換えます。

この機能を INSERT DML コマンドと混同しないでください。

構文

INSERT( <base_expr>, <pos>, <len>, <insert_expr> )

引数

ベース式

文字を挿入/置換する文字列または BINARY 式です。

ポジション

文字の挿入を開始するオフセットです。これは0ベースではなく、1ベースです。つまり、文字列の最初の文字は、位置0ではなく位置1にあると見なされます。たとえば、文字列の先頭に挿入するには、 ポジション を1に設定します。

有効な値は、1から文字列の長さより1つ大きい値までです(この値を含む)。

ポジション を文字列の長さより1つ大きく設定すると、操作は追加と同等になります。(これには、 長さ パラメーターが0である必要もあります。これは、最後の文字を過ぎた文字を削除しないようにするためです。)

長さ

置き換える文字数です( ポジション から)。有効な値の範囲は、0から ポジション 、さらに文字列の終わりまでの文字数です。これが0の場合、既存の文字を削除せずに新しい文字を追加することを意味します。

挿入式

ベース式 に挿入する文字列です。この文字列が空で、 長さ がゼロより大きい場合、事実上の操作は削除になります(一部の文字は削除され、何も追加されません)。

使用上の注意

  • ベース式挿入式 は同じデータ型でなければなりません。両方が文字列(VARCHAR など)、または両方がバイナリの必要があります。

  • 引数のいずれかが NULLの場合、戻り値は NULLです。

戻り値

ベース式 のコピーを作成し、 ポジション で始まる 長さ 文字を削除してから、 ポジション挿入式 を挿入するのと同等の文字列または BINARY を返します。

元の入力 ベース式 は変更されません。関数は、個別の(変更された)コピーを返します。

これは簡単な例です。

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 |
+------+