2026-07-11 11:04:01 同人作品

替換(Transact-SQL) - SQL Server

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse Analytics分析平台系統(PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲Microsoft Fabric 中的 SQL 資料庫

將指定字串值的所有相符項目取代成另一個字串值。

Transact-SQL 語法慣例

語法

REPLACE ( string_expression , string_pattern , string_replacement )

引數

string_expression

這是要搜尋的字串運算式。

string_expression 可以是字元或二進位資料類型。

string_pattern

這是要尋找的子字串。

string_pattern 可以是字元或二進位資料類型。

string_pattern 不得超過頁面所能容納的最大位元組數目。 若 string_pattern 是空字串 (''),則不會變更傳回的 string_expression。

string_replacement

這是取代字串。

string_replacement 可以是字元或二進位資料類型。

傳回型別

如果其中一個輸入引數是 nvarchar 資料類型,便傳回 nvarchar;否則,REPLACE 會傳回 varchar。

如果任何一個引數是 NULL,便會傳回 NULL。

如果 string_expression 的類型不是 varchar(max) 或 nvarchar(max),則 REPLACE 會將傳回值截斷為 8,000 位元組。 若要傳回大於 8,000 位元組的值,string_expression 必須明確轉換成大數值資料類型。

備註

REPLACE 會以輸入的定序為基礎來執行比較。 若要在指定的定序中執行比較,您可以使用 將 COLLATE 明確定序套用至輸入。

0x0000 (char(0) ) 是 Windows 定序中未定義的字元,而且不得包含在 REPLACE 中。

範例

下列範例利用 cde 來取代 abcdefghicde 中的 xxx 字串。

SELECT REPLACE('abcdefghicde','cde','xxx');

GO

結果集如下所示。

------------

abxxxfghixxx

(1 row(s) affected)

下列範例使用 COLLATE 函數。

SELECT REPLACE('This is a Test' COLLATE Latin1_General_BIN,

'Test', 'desk' );

GO

結果集如下所示。

------------

This is a desk

(1 row(s) affected)

下列範例會使用 REPLACE 函數計算句子中的空格數目。 首先,其會使用 LEN 函數來計算句子的長度。 然後,其會以具有 REPLACE 的 '' 取代 ' ' 字元。 在此處理序之後,其會再次計算句子的長度。 產生的差異是句子中空白字元數目。

DECLARE @STR NVARCHAR(100), @LEN1 INT, @LEN2 INT;

SET @STR = N'This is a sentence with spaces in it.';

SET @LEN1 = LEN(@STR);

SET @STR = REPLACE(@STR, N' ', N'');

SET @LEN2 = LEN(@STR);

SELECT N'Number of spaces in the string: ' + CONVERT(NVARCHAR(20), @LEN1 - @LEN2);

GO

結果集如下所示。

------------

Number of spaces in the sentence: 7

(1 row(s) affected)

另請參閱

CONCAT (Transact-SQL)

CONCAT_WS (Transact-SQL)

格式訊息 (Transact-SQL)

報價名稱 (Transact-SQL)

反轉 (Transact-SQL)

STRING_AGG (Transact-SQL)

STRING_ESCAPE (Transact-SQL)

東西 (Transact-SQL)

翻譯 (Transact-SQL)

資料類型 (Transact-SQL)