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
の結果を返します 。