REPLACE (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库
将出现的所有指定字符串值替换为另一个字符串值。
语法
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 将返回值截断为 8000 个字节 。 若要返回大于 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)
FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)
REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)
数据类型 (Transact-SQL)
字符串函数 (Transact-SQL)