STUFF (Transact-SQL)
STUFF 函數會將字串插入另一個字串。 它會在第一個字串的開始位置刪除指定長度的字元,然後將第二個字串插入第一個字串的開始位置。
語法
STUFF ( character_expression , start , length , replaceWith_expression )
引數
character_expression
這是字元資料的運算式。 character_expression 可以是字元或二進位資料的常數、變數或資料行。start
這是一個開始刪除和插入之位置的整數值。 如果 start 或 length 是負數,則會傳回空字串。 如果 start 比第一個 character_expression 長,就會傳回 Null 字串。 start 可以是 bigint 類型。length
這是一個整數,指定要刪除的字元數。 如果 length 長度超出第一個 character_expression,刪除動作就會進行到最後一個 character_expression 的最後一個字元。 length 可以是 bigint 類型。replaceWith_expression
這是字元資料的運算式。 character_expression 可以是字元或二進位資料的常數、變數或資料行。 這個運算式會從 start 開始取代 character_expression 的 length 的字元。
傳回類型
如果 character_expression 是其中一個支援的字元資料類型,就會傳回字元資料。 如果 character_expression 是支援的二進位資料類型之一,就會傳回二進位資料。
備註
如果開始位置或長度是負的,或如果開始位置大於第一個字串的長度,則會傳回空的字串。 如果開始位置是 0,則會傳回 null 值。 如果刪除的長度大於第一個字串,則會刪除到剩下第一個字串中的第一個字元。
如果產生的值大於傳回類型所支援的最大值,便會引發錯誤。
補充字元 (Surrogate 字組)
使用 SC 定序時,character_expression 和 replaceWith_expression 都可以包含 Surrogate 字組。 長度參數會將 character_expression 中的每個 Surrogate 計算為單一字元。
範例
下列範例會傳回從第一個字串 (abcdef) 中,從位置 2 (b) 開始,刪除三個字元所建立的字元字串,且會在刪除點插入第二個字串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO
以下為結果集:
---------
aijklmnef
(1 row(s) affected)