Necesito actualizar / reemplazar los datos en datatable.column. La tabla tiene un campo llamado Content
. Estoy usando la REPLACE
función. Dado que el tipo de datos de la columna es NTEXT
, SQL Server no me permite usar la REPLACE
función.
No puedo cambiar el tipo de datos porque esta base de datos es una tabla de software de terceros. Cambiar el tipo de datos hará que la aplicación falle.
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = REPLACE(Content,'ABC','DEF')
WHERE Content LIKE '%ABC%'
Recibo este error:
Msg 8116, Nivel 16, Estado 1, Línea 1 El tipo de datos de argumento ntext no es válido para el argumento 1 de la función de reemplazo.
- ¿Puedo arreglar esto con T-SQL? ¿Alguien tiene un ejemplo de cómo leer y hacer un bucle?
- Dado que esta es una conversión única, tal vez pueda cambiar a otro tipo, pero me temo que estoy estropeando los datos.
Hay un campo de clave principal: nombre: ID - entero - es una identidad ... Así que también necesito pensar en esto. Quizás establezca la Identidad en N temporalmente.
Por favor, infórmese sobre cómo lograr la función REPLACE.
Aprox. 3000 declaraciones deben actualizarse con una nueva solución.
fuente
Respuestas:
SI sus datos no superan los 4000 caracteres Y está en SQL Server 2000 o nivel de compatibilidad de 8 o SQL Server 2000:
Para SQL Server 2005+:
fuente
NText
realmente necesario el segundo elenco ? Me gustaría pensar que la asignaciónNVarchar(MAX)
aNText
proyectaría automáticamente.Suponiendo SQL Server 2000, la siguiente pregunta de StackOverflow debería abordar su problema.
Si usa SQL Server 2005/2008, puede usar el siguiente código (tomado de aquí ):
fuente