我试图在SQL Server临时表中找到并替换很长的HTML文本(我使用的是SQL Server 2012)。
查询结构是:
UPDATE #Descriptions
SET Desc1 = replace(Desc1, 'VERY LONG HTML 1','VERY LONG HTML 2')
WHERE Desc1 like 'VERY LONG HTML 1'
我正在
文本或二进制数据将被截断
错误。 HTML部分很长,但应该很容易适合 - 整个事情适合varchar(max)
,这些只是它的一部分。
有人可以帮忙吗?
谢谢! 微米。
答案 0 :(得分:0)
尝试使用:
field = replace(cast(field as varchar(max)),'string' ,'replacement')
答案 1 :(得分:0)
由于Sean Lange因为输出字符串被截断而指出了它。这可以在官方documentation中找到:
返回类型
如果其中一个输入参数是nvarchar数据类型,则返回nvarchar;否则,REPLACE返回varchar。返回 如果任何一个参数为NULL,则为NULL。如果string_expression不是 类型为varchar(max)或nvarchar(max),REPLACE截断返回值 值为8,000字节。要返回大于8,000字节的值, string_expression必须显式地转换为大值数据类型。
这可以通过将您的字符串拆分为多个固定长度的字符串,替换其中的数据然后将它们连接在一起来实现。