alternativas para REEMPLAZAR en un tipo de datos text o ntext
Necesito actualizar/reemplazar los datos en datatable.columna. La tabla tiene un campo llamado Content
. Estoy usando la función REPLACE
. Dado que el tipo de datos de la columna es NTEXT
, SQL Server no me permite usar la función REPLACE
.
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 Argumento tipo de datos ntext es no válido para el argumento 1 de la función replace.
- ¿Puedo arreglar esto con T-SQL? ¿Alguien tiene un ejemplo de cómo leer y hacer loop?
- Dado que esta es una conversión única, tal vez pueda cambiar a otro tipo, pero me temo que estoy arruinando los datos.
Hay un campo de clave primaria: name: ID - integer - es una identidad.... Así que necesito pensar en esto también. Tal vez establecer la identidad a N temporal.
Por favor, aconseje sobre cómo lograr el REEMPLAZO ¿función?
Aprox. 3000 declaraciones deben actualizarse con una nueva solución.
2 answers
SI sus datos no desbordan 4000 caracteres Y está en SQL Server 2000 o nivel de compatibilidad de 8 o SQL Server 2000:
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = CAST(REPLACE(CAST(Content as NVarchar(4000)),'ABC','DEF') AS NText)
WHERE Content LIKE '%ABC%'
Para SQL Server 2005+:
UPDATE [CMS_DB_test].[dbo].[cms_HtmlText]
SET Content = CAST(REPLACE(CAST(Content as NVarchar(MAX)),'ABC','DEF') AS NText)
WHERE Content LIKE '%ABC%'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-03 01:23:30
Asumiendo SQL Server 2000, la siguiente pregunta StackOverflow debería abordar su problema.
Si usa SQL Server 2005/2008, puede usar el siguiente código (tomado de aquí):
select cast(replace(cast(myntext as nvarchar(max)),'find','replace') as ntext)
from myntexttable
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:10