sql >> データベース >  >> RDS >> Sqlserver

STUFF()を使用してSQLServerの別の文字列に文字列を挿入する方法

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


    1. psycopg2==2.6.2のインストール中にエラーが発生しました

    2. SQLiteで値に少なくとも1桁の数字が含まれているかどうかを検出する

    3. マルチステートメントテーブル値関数とインラインテーブル値関数

    4. SQL Server:sp_who2の出力をフィルター処理します