我试图用SQL中的现有字符替换很大的字符,如下所示
select REPLACE('main context', 'text', 'CharactersOver8000')
它将引发以下错误
String or binary data would be truncated.
我尝试将整个替换对象转换为nvarchar(max),但它不起作用。有什么建议吗?当前在SQL2012上
答案 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')