2015-01-15 2 views
0

Я пытаюсь использовать этот код, чтобы разрешить острый акцент на колонного типа текста:Использование REPLACE на колонке типа данных TEXT SQL Server

UPDATE [AcuerdateWEB].[dbo].[Actividad] 
SET Descripcion = REPLACE(CAST(Descripcion AS nvarchar(max)), 'ó', '&oacute') 
WHERE Descripcion like '%&oacute%' 

Проблема заключается в том, что тип данных столбца является text и не могут быть заменены; но когда я использую вышеприведенный код, вы увидите, что запрос был успешно выполнен и отобразилось общее количество затронутых строк.

+2

Почему вы все еще используете ТЕКСТ? Он устарел в течение 10 лет ... –

ответ

2

Это ТЕКСТ или NTEXT? Вы смешиваете типы в REPLACE.

Причина, по которой завершается без ошибок, но ничего не делает, что вы просите его заменить любой ó с &oacute, и только в записях, которые имеют &oacute.

Как это написано в настоящее время, это неоднозначно относительно того, какой из них вы хотите заменить другим, поэтому я покажу и то, и другое.

Если вы хотите заменить ó с &oacute:

UPDATE [AcuerdateWEB].[dbo].[Actividad] 
SET Descripcion = REPLACE(CAST(Descripcion AS VARCHAR(MAX)), 'ó', '&oacute') 
WHERE Descripcion like '%ó%'; 

Если вы хотите заменить &oacute с ó:

UPDATE [AcuerdateWEB].[dbo].[Actividad] 
SET Descripcion = REPLACE(CAST(Descripcion AS VARCHAR(MAX)), '&oacute', 'ó') 
WHERE Descripcion like '%&oacute%'; 

Кроме того, если тип данных действительно NTEXT, просто изменить VARCHAR(MAX) должен быть NVARCHAR(MAX) и префикса 3 строковых литералов с N, как в:

UPDATE [AcuerdateWEB].[dbo].[Actividad] 
SET Descripcion = REPLACE(CAST(Descripcion AS NVARCHAR(MAX)), N'ó', N'&oacute') 
WHERE Descripcion like N'%ó%'; 
+0

Благодарю вас, вы правы, я установил строки в неправильном параметре. – user3550529