STUFF (Transact-SQL)STUFF (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

STUFF 関数では、文字列が別の文字列に挿入されます。The STUFF function inserts a string into another string. まず、1 番目の文字列の指定された開始位置から指定された長さの文字を削除し、次に、2 番目の文字列を 1 番目の文字列の指定された開始位置に挿入します。It deletes a specified length of characters in the first string at the start position and then inserts the second string into the first string at the start position.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

STUFF ( character_expression , start , length , replaceWith_expression )  

引数Arguments

character_expressioncharacter_expression
文字データのです。Is an expression of character data. character_expression には、文字データまたはバイナリ データの定数、変数、または列を使用できます。character_expression can be a constant, variable, or column of either character or binary data.

startstart
削除と挿入を開始する位置を指定する整数値です。Is an integer value that specifies the location to start deletion and insertion. start が負の値またはゼロの場合は、null 文字列が返されます。If start is negative or zero, a null string is returned. start が最初の character_expression よりも長い場合は、null 文字列が返されます。If start is longer than the first character_expression, a null string is returned. start には bigint 型を使用できます。start can be of type bigint.

lengthlength
削除する文字数を指定する整数です。Is an integer that specifies the number of characters to delete. length が負の値の場合は、null 文字列が返されます。If length is negative, a null string is returned. length が最初の character_expression よりも長い場合、最後の character_expression の末尾の文字まで削除が実行されます。If length is longer than the first character_expression, deletion occurs up to the last character in the last character_expression. length がゼロの場合、文字列の先頭の文字の前に挿入が実行されます。If length is zero, insertion occurs before the first character in the string. length には bigint 型を使用できます。length can be of type bigint.

replaceWith_expressionreplaceWith_expression
文字データのです。Is an expression of character data. character_expression には、文字データまたはバイナリ データの定数、変数、または列を使用できます。character_expression can be a constant, variable, or column of either character or binary data. この式は、character_expressionstart から始まる length 文字を置き換えます。This expression replaces length characters of character_expression beginning at start. NULLreplaceWith_expression を指定すると、何も挿入されず、文字が削除されます。Providing NULL as the replaceWith_expression, removes characters without inserting anything.

戻り値の型Return Types

character_expression が、サポートされている文字データ型のいずれかの場合は、文字データが返されます。Returns character data if character_expression is one of the supported character data types. character_expression が、サポートされているバイナリ データ型のいずれかの場合は、バイナリ データが返されます。Returns binary data if character_expression is one of the supported binary data types.

RemarksRemarks

開始位置または長さが負の場合、または開始位置が 1 番目の文字列の長さを超える場合は NULL 文字列が返されます。If the start position or the length is negative, or if the starting position is larger than length of the first string, a null string is returned. 開始位置が 0 の場合は、NULL 値が返されます。If the start position is 0, a null value is returned. 削除する長さが 1 番目の文字列より長い場合は、1 番目の文字列の最初の文字まで削除されます。If the length to delete is longer than the first string, it is deleted to the first character in the first string.

結果値が、戻り値の型でサポートされている最大値より大きい場合は、エラーが発生します。An error is raised if the resulting value is larger than the maximum supported by the return type.

補助文字 (サロゲート ペア)Supplementary Characters (Surrogate Pairs)

SC の照合順序を使用する場合、character_expressionreplaceWith_expression の両方にサロゲート ペアを含めることができます。When using SC collations, both character_expression and replaceWith_expression can include surrogate pairs. length パラメーターでは、character_expression 内の各サロゲートは 1 文字としてカウントされます。The length parameter counts each surrogate in character_expression as a single character.

使用例Examples

次の例では、最初の文字列 (abcdef) の位置 2 (b) から 3 文字を削除し、その位置に 2 番目に指定した文字列を挿入して生成される文字列を返します。The following example returns a character string created by deleting three characters from the first string, abcdef, starting at position 2, at b, and inserting the second string at the deletion point.

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

以下に結果セットを示します。Here is the result set.

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

参照See Also

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