Мне нужно обновить / заменить данные в datatable.column. В таблице есть поле с именем Content
. Я использую REPLACE
функцию. Поскольку тип данных столбца равен NTEXT
, SQL Server не позволяет мне использовать эту REPLACE
функцию.
Я не могу изменить тип данных, потому что эта база данных представляет собой таблицу стороннего программного обеспечения. Изменение типа данных приведет к сбою приложения.
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = REPLACE(Content,'ABC','DEF')
WHERE Content LIKE '%ABC%'
Я получаю эту ошибку:
Msg 8116, уровень 16, состояние 1, строка 1 Тип данных аргумента ntext недопустим для аргумента 1 функции замены.
- Могу я исправить это с помощью T-SQL? У кого-нибудь есть пример, как читать и зацикливать?
- Поскольку это однократное преобразование, возможно, я смогу перейти на другой тип, но, боюсь, я испортил данные.
Есть поле первичного ключа: name: ID - integer - это личность .... Так что мне тоже нужно подумать об этом. Возможно, установите для параметра Identity значение N.
Посоветуйте, пожалуйста, как добиться функции ЗАМЕНИТЬ?
Прибл. 3000 заявлений необходимо обновить новым решением.
источник
Ответы:
ЕСЛИ ваши данные не превышают 4000 символов И вы используете SQL Server 2000 или уровень совместимости 8 или SQL Server 2000:
Для SQL Server 2005+:
источник
NText
действительно ли необходимо второе применение ? Я думаю, что присвоение автоматически приведетNVarchar(MAX)
кNText
его преобразованию.Предполагая, что SQL Server 2000, следующий вопрос StackOverflow должен решить вашу проблему.
Если вы используете SQL Server 2005/2008, вы можете использовать следующий код (взятый отсюда ):
источник