分享方式:


STUFF (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲

STUFF 函數會將字串插入另一個字串。 它會在第一個字串的開始位置刪除指定長度的字元,然後將第二個字串插入第一個字串的開始位置。

Transact-SQL 語法慣例

語法

STUFF ( character_expression , start , length , replace_with_expression )

引數

character_expression

字元資料的運算式character_expression 可以是字元或二進位資料的常數、變數或資料行。

開始

指定位置以開始刪除及插入的整數值。 如果 start 是負數或零,則會傳回 Null 字串。 如果 start 長度超出第一個 character_expression,則會傳回 Null 字串。 start 可以是 bigint 類型。

length

指定要刪除字元數的整數。 如果 length 是負數,則會傳回 Null 字串。 如果 length 長度超出第一個 character_expression,則刪除動作就會進行到最後一個 character_expression的最後一個字元。 如果 length 為零,則會在 start 位置進行插入,且不會刪除任何字元。 length 可以是 bigint 類型。

replace_with_expression

字元資料的運算式replace_with_expression 可以是字元或二進位資料的常數、變數或資料行。 這個運算式會從 start 開始取代 character_expressionlength 字元。 提供 NULL 當做 replace_with_expression,移除字元且不插入任何內容。

傳回類型

如果 character_expression 是其中一個支援的字元資料類型,就會傳回字元資料。 如果 character_expression 是其中一個支援的二進位資料類型,就會傳回二進位資料。

備註

如果開始位置或長度是負的,或如果開始位置大於第一個字串的長度,則會傳回空的字串。 如果開始位置是 0,則會傳回 null 值。 如果刪除的長度大於第一個字串,則會刪除到剩下第一個字串中的第一個字元。

如果產生的值大於傳回類型所支援的最大值,便會引發錯誤。

補充字元 (代理字組)

當使用增補字元 (SC) 定序時,character_expressionreplace_with_expression 都可以包含代理字組。 長度參數會將 character_expression 中的每個 Surrogate 計算為單一字元。

範例

下列範例會傳回從第一個字串 (abcdef) 中,從位置 2 (b) 開始,刪除三個字元所建立的字元字串,且會在刪除點插入第二個字串。

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

結果集如下所示。

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

另請參閱