我们有一个非常大的包含html的nvarchar(max)字段。在这个html内是一个img标签。字符串或二进制数据将被截断 - 大字符串
实施例:
<img style="float:right" src="data:image/png;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/7gAOQW....
此列的长度为1645151,但什么被替换比这少一点,但不是很多。
我们正在尝试做的,是在SQL中替换列:
declare @url varchar(50) = 'myimageurl';
UPDATE table SET field =
CAST(REPLACE(CAST(field as NVARCHAR(MAX)),@source,'@url') AS NVARCHAR(MAX))
其中@source,是上面的图像字节字符串,它之前被分配到一个nvarchar(最大)变量运行替换。 dest是图像的url,而不是图像字符串。
虽然我仍然得到消息字符串或二进制数据将被截断。
有谁知道这是否可能在SQL中取代这样大的字符串。
只是想到这个问题,我倾向于用图像url替换整个字段的值来代替二进制数据,而不是尝试进行字符串替换。我认为这会更清晰,更易于阅读。而且更可靠。 –
如果“field”的长度是1645151,外部“CAST”是否需要将其转换为nvarchar(1645151)? REPLACE函数应该已经返回nvarchar(max)。 – ADyson
@ADyson nvarchar的最大尺寸是8000 –