如何在SQL Replace函数中传递大的string_replacement

时间:2018-10-19 19:49:26

标签: sql sql-server replace

我试图用SQL中的现有字符替换很大的字符,如下所示

select REPLACE('main context', 'text', 'CharactersOver8000')

它将引发以下错误

String or binary data would be truncated.

我尝试将整个替换对象转换为nvarchar(max),但它不起作用。有什么建议吗?当前在SQL2012上

2 个答案:

答案 0 :(得分:0)

在替换内进行铸造应该可以工作。我刚刚测试过:

SELECT REPLACE(CAST('MainContext' AS varchar(max)), 'text', '{8005 character string}')

它奏效了。

答案 1 :(得分:0)

此错误消息是什么原因?


来自 Docs Online

  

如果string_expression不是varchar(max)或nvarchar(max)类型,则REPLACE会将返回值截断为8,000个字节。要返回大于8,000个字节的值,必须将string_expression显式转换为大值数据类型。


解决方案是什么?


string_expression在您的情况下是'MainContext',因此您需要将其强制转换为VARCHAR(MAX)NVARCHAR(MAX)数据类型,

select REPLACE(CAST('main context' AS VARCHAR(MAX), 'text', 'CharactersOver8000')