我已经检查过了,每个人似乎都遇到了列长太小的问题。我不认为这是我的问题,因为一切都是varchar max。
我有一个大文本字符串存储在一列中
Select len(templateDocument) from TemplateDocument
This Returns 5142610
我正在尝试用新文本替换旧文本并遇到此问题
UPDATE TemplateDocument
SET templateDocument = REPLACE(templateDocument, @BookmarkOldText, @BookmarkNewText)
这就是我的错误被抛出的地方。
我的新文本长度为 12067,旧文本长度为 14279。看到我的新文本小于我的新文本,它应该适合并且不应该抛出错误。我甚至可以在 varchar(max) 中将当前文本加倍,这很合适。
declare @fullItem varchar(max)
SELECT @fullItem = templateDocument from TemplateDocument
SET @fullItem = @fullItem + ' ' + @fullItem
Select LEN(@fullItem)
This Returns 10285221
这很好,它仍然适合数据类型,然后适合列。
所以我的问题是为什么在替换上说会有截断?看起来数据类型足够大,可以将整个文档存储两次。替换功能是否有大小限制?如果是这样,有没有更好的方法来通过和替换它?
问题可能是VARCHAR(MAX)
哪个容量可以存储 8000 长度
欲了解更多详情,请查看
http://msdn.microsoft.com/en-us/library/ms176089.aspx