SQL Serverでは、T-SQL STUFF()を使用できます。 文字列を別の文字列に挿入する関数。これにより、特定の位置に単語を挿入するなどのことができます。また、特定の位置で単語を置き換えることもできます。
公式の構文は次のとおりです。
STUFF ( character_expression , start , length , replaceWith_expression )
-
character_expression元の文字列です。これは、実際には、文字データまたはバイナリデータの定数、変数、または列にすることができます。 開始開始位置(つまり、新しい文字列が挿入される場所)を指定します。長さコード> 元の文字列から削除される文字数です。-
replaceWith_expression挿入される文字列です。replaceWith_expression文字データまたはバイナリデータの定数、変数、または列にすることができます。
単語を置き換える
文字列内の単語を置き換える例を次に示します。
SELECT STUFF('Cats and dogs', 6, 3, 'like'); 結果:
Cats like dogs
この場合、 likeという単語を指定します 6の位置に挿入し、元の文字列から3文字を削除する必要があります(これにより、およびという単語が削除されます。 )。つまり、とという単語 が削除され、 likeという単語が削除されます 挿入されます。
単語を挿入
元の文字列から何も削除せずに単語を挿入する例を次に示します。
SELECT STUFF('Cats and dogs', 10, 0, 'big '); 結果:
Cats and big dogs
0 を指定したため、元の文字列から何も削除されません 3番目の引数として。
範囲外の値
開始位置が元の文字列の長さの外側にある場合、NULL値が返されます。
例:
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits'); 結果:
NULL
この場合、元の文字列の長さは20文字ではないため、結果は NULLになります。 。
0 を指定した場合も、同じことが起こります。 または負の数:
SELECT STUFF('Cats and dogs', -1, 4, 'rabbits'); 結果:
NULL
これらの例の結果は、MySQLの INSERT()とは対照的です。 このシナリオでは元の文字列を返す関数。 MySQLのINSERT() 基本的にT-SQLのSTUFF()と同じことを行います (このような場合を除く)。
NULL値の挿入
NULL値を挿入すると、結果は、指定された位置から指定された文字数を削除するだけです。つまり、何も挿入されませんが、指定されたとおりに文字が削除されます。
例:
SELECT STUFF('Cats and dogs', 6, 3, NULL); 結果:
Cats dogs
これは、MySQLがT-SQLと異なるもう1つの領域です。この例をMySQLのINSERT()で実行する 関数はNULLの結果を返します 。