Как передать большое string_replacement в функцию SQL Replace - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь заменить очень большие символы существующим символом в SQL, как показано ниже

select REPLACE('main context', 'text', 'CharactersOver8000')

Это приведет к следующей ошибке

String or binary data would be truncated.

Я пытаюсь привестивесь заменить на nvarchar (max), но это не работает.Любое предложение?В настоящее время его на SQL2012

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

В чем причина этого сообщения об ошибке?


Из Документов в Интернете

Если строка_выражение нетипа varchar (max) или nvarchar (max), REPLACE усекает возвращаемое значение до 8000 байт.Чтобы вернуть значения, превышающие 8000 байт, выражение string_expression должно быть явно приведено к типу данных большого значения.


Что такое решение?


string_expressionв вашем случае это 'MainContext', поэтому вам нужно привести его к типам VARCHAR(MAX) или NVARCHAR(MAX) как

select REPLACE(CAST('main context' AS VARCHAR(MAX), 'text', 'CharactersOver8000')
0 голосов
/ 19 октября 2018

Литье внутри заменить должно работать.Я только что проверил это:

SELECT REPLACE(CAST('MainContext' AS varchar(max)), 'text', '{8005 character string}')

И это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...