STUFF (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン) はいAzure SQL データベース はいAzure SQL Managed Instance はいAzure Synapse Analytics はいParallel Data Warehouse

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

トピック リンク アイコン Transact-SQL 構文表記規則

構文

STUFF ( character_expression , start , length , replaceWith_expression )  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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

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

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

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

戻り値の型

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

解説

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

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

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

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

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

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

結果セットは次のようになります。

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

参照

CONCAT (Transact-SQL)
CONCAT_WS (Transact-SQL)
FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
TRANSLATE (Transact-SQL)
データ型 (Transact-SQL)
文字列関数 (Transact-SQL)