在SQL Server数据库中替换非常长的HTML文本

时间:2015-10-05 15:55:33

标签: sql sql-server

我试图在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),这些只是它的一部分。

有人可以帮忙吗?

谢谢! 微米。

2 个答案:

答案 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必须显式地转换为大值数据类型。

这可以通过将您的字符串拆分为多个固定长度的字符串,替换其中的数据然后将它们连接在一起来实现。