Строка или двоичные данные будут обрезаны на varchar(не более)

Я проверил, и все, кажется, сталкиваются с проблемами из-за слишком малой длины столбцов. Я не думаю, что это моя проблема, так как все это varchar max.

У меня есть большая текстовая строка хранится в столбце

Select  len(templateDocument) from TemplateDocument
This Returns 5142610

Я пытаюсь сделать замену старого текста новым текстом и сталкиваюсь с этой проблемой

UPDATE TemplateDocument
SET templateDocument = REPLACE(templateDocument, @BookmarkOldText, @BookmarkNewText)

Это где моя ошибка получена.

Мой новый текст имеет длину 12067, старый текст - 14279. Поскольку мой новый текст меньше моего нового, он должен соответствовать и не должен вызывать ошибку. Я даже могу удвоить текущий текст в VARCHAR (Макс), и это хорошо подходит.

    declare @fullItem varchar(max)
    SELECT @fullItem = templateDocument from TemplateDocument 
    SET @fullItem = @fullItem + ' ' + @fullItem
    Select LEN(@fullItem)
    This Returns 10285221

Что хорошо, и он все еще вписывается в тип данных, а затем в столбец.

Итак, мой вопрос: почему на замене говорится, что будет усечение? Похоже, что тип данных достаточно велик, чтобы хранить весь документ дважды. Есть ли ограничение на размер функции замены? Если так, есть ли лучший способ пройти и заменить это?

1 ответ

Проблема может быть VARCHAR(MAX) который имеет емкость для хранения 8000 длины

для более подробной информации, пожалуйста, посмотрите на

http://msdn.microsoft.com/en-us/library/ms176089.aspx

Другие вопросы по тегам