Я думаю, что мы обсуждали это ранее , теперь согласно Документам в Интернете
varchar[(n | max)] Строковые данные переменной длины.n определяет длину строки и может принимать значение от 1 до 8000.max указывает, что максимальный размер хранилища составляет 2 ^ 31-1 байт (2 ГБ).
REPLACE ( string_expression , string_pattern , string_replacement )
Итак, если у вас есть строковые данные, хранящиеся >8000
, вы должны объявить / привести их какVARCHAR(MAX)/NVARCHAR(MAX)
это относится к string_expression
, на который я отвечаю в другом вопросе, теперь обращаюсь к вашему коду
SELECT REPLACE(
CAST('CharactersOver10000' AS VARCHAR(MAX),
'CharactersOver8000', --Here is your problem
'text'
);
string_pattern
должно быть <<code>string_expression и должно быть <= 8000
( не должно превышать максимальное количество байтов, которое умещается на странице. , как указано), если это > 8000
, функция REPLACE()
не будет работать, и вы получите
String илидвоичные данные будут усечены.
Решение:
Вы можете разбить ваш string_pattern
на 2 или более частей.
Вот Демо , имитирующее ваш случай.