STUFF (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス

STUFF 関数では、文字列が別の文字列に挿入されます。 まず、1 番目の文字列の指定された開始位置から指定された長さの文字を削除し、次に、2 番目の文字列を 1 番目の文字列の指定された開始位置に挿入します。

Transact-SQL 構文表記規則

構文

STUFF ( character_expression , start , length , replace_with_expression )

引数

character_expression

文字データのです。 character_expression には、文字データまたはバイナリ データの定数、変数、または列を使用できます。

start

削除と挿入を開始する位置を指定する整数値です。 start が負の値またはゼロの場合は、null 文字列が返されます。 start が最初の character_expression よりも長い場合は、null 文字列が返されます。 start には bigint 型を使用できます。

length

削除する文字数を指定する整数です。 length が負の値の場合は、null 文字列が返されます。 length が最初の character_expression よりも長い場合、最後の character_expression の末尾の文字まで削除が実行されます。 length がゼロの場合、挿入は開始位置で行われ、文字は一切削除されません。 length には bigint 型を使用できます。

replace_with_expression

文字データのです。 replace_with_expression には、文字データまたはバイナリ データの定数、変数、または列を指定できます。 この式は、character_expressionstart から始まる length 文字を置き換えます。 NULLreplace_with_expression を指定すると、何も挿入されず、文字が削除されます。

戻り値の型

character_expression が、サポートされている文字データ型のいずれかの場合は、文字データが返されます。 character_expression が、サポートされているバイナリ データ型のいずれかの場合は、バイナリ データが返されます。

解説

開始位置または長さが負の場合、または開始位置が 1 番目の文字列の長さを超える場合は NULL 文字列が返されます。 開始位置が 0 の場合は、NULL 値が返されます。 削除する長さが 1 番目の文字列より長い場合は、1 番目の文字列の最初の文字まで削除されます。

結果値が、戻り値の型でサポートされている最大値より大きい場合は、エラーが発生します。

補助文字 (サロゲート ペア)

補助文字 (SC) の照合順序を使用する場合、character_expressionreplace_with_expression の両方にサロゲート ペアを含めることができます。 length パラメーターでは、character_expression 内の各サロゲートは 1 文字としてカウントされます。

次の例では、最初の文字列 (abcdef) の位置 2 (b) から 3 文字を削除し、その位置に 2 番目に指定した文字列を挿入して生成される文字列を返します。

SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO

結果セットは次のとおりです。

---------
aijklmnef
  
(1 row(s) affected)

関連項目