適用於: SQL Server(從 2008 開始)
Azure SQL 數據庫
Azure SQL 數據倉庫
並行數據倉庫
STUFF 函數將字符串插入到另一個字符串中。 它從第一個字符串的開始位置刪除指定長度的字符;然后將第二個字符串插入到第一個字符串的開始位置。
語法
STUFF ( character_expression , start , length , replaceWith_expression )
參數
character_expression
字符數據的表達式。 character_expression 可以是常量、變量,也可以是字符列或二進制數據列。
start
一個整數值,指定刪除和插入的開始位置。 如果 start 為負或為零,則返回空字符串。 如果 start 的長度大於第一個 character_expression,則返回空字符串。 start 的類型可以是 bigint。
length
一個整數,指定要刪除的字符數。 如果 length 為負,則返回空字符串。 如果 length 的長度大於第一個 character_expression,則最多可以刪除到最后一個 character_expression 中的最后一個字符。 如果 length 為零,則在字符串中第一個字符之前插入內容。 length 的類型可以是 bigint。
replaceWith_expression
字符數據的表達式。 character_expression 可以是常量、變量,也可以是字符列或二進制數據列。 此表達式從 start 開始替換 length 個字符的 character_expression。 如果 replaceWith_expression 為 NULL
,則在不插入任何內容的情況下刪除字符。
返回類型
如果 character_expression 是支持的字符數據類型之一,則返回字符數據。 如果 character_expression 是支持的二進制數據類型之一,則返回二進制數據。
Remarks
如果開始位置或長度值是負數,或者開始位置大於第一個字符串的長度,則返回 Null 字符串。 如果開始位置為 0,則返回 Null 值。如果要刪除的長度大於第一個字符串的長度,則刪除到第一個字符串中的第一個字符。
如果結果值大於返回類型支持的最大值,則會引發錯誤。
補充字符(代理項對)
使用 SC 排序規則時,character_expression 和 replaceWith_expression 都可以包含代理項對。 length 參數將 character_expression 中的每個代理項計為一個字符。
示例
以下示例從第一個字符串 abcdef
的第 2
個位置 (b
) 開始刪除三個字符,然后在刪除位置插入第二個字符串,從而創建並返回一個字符串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn');
GO
下面是結果集:
---------
aijklmnef
(1 row(s) affected)