2016-02-23 2 views
0

Как-то я ввел запись в таблицу, состоящую из '* - /'.Удаление записи SQL, содержащей *

Все мои знания об удалении его возвращает либо:

Неправильный синтаксис около '*'.

или

Конверсия удалось при преобразовании значения VARCHAR '* - /' для типа данных Int.

delete * from st210 where stid = '*-/' 

и команду, чтобы удалить все, что не были частью моего набора

например, идентификатор не (1,2,3,4)

+0

Используйте подстановочный знак% в своем заявлении вокруг * _/like so% * _ /% – GabrielVa

+0

Измените свой вопрос и добавьте запрошенные SQL-запросы. –

+0

Пожалуйста, покажите команду, которую вы использовали. –

ответ

2
DELETE FROM table_name 
WHERE column_name = '%*-/%'; 
+0

Пробовал это. Все еще получаете неправильный синтаксис рядом с '*' –

+0

Если вы используете% в качестве шаблона в столбцах varchar, не следует ли это читать 'WHERE column_name like '% * - /%';'? – CactusCake

+0

Мое знание sql - это hodgepodge, как мне нужно. Я не мог, чтобы жизнь меня помнила имя «escape character», поэтому я мог бы найти его до сих пор. Но ваша команда @JOE решила это для меня. –

0

Моя догадка что ваш столбец stid является текстовым типом данных (текст, ntext, nvarchar и т. д.), но у вас есть куча текста, который выглядит как цифры, и по какой-либо причине SQL Server видит эти значения и делает некоторые неявные конверсия для вас, а затем неудача. Попробуйте это ...

DELETE 
    st210 
WHERE 
    CONVERT(nvarchar(max), stid) = '*-/' 

Для принудительного явного преобразования следует избегать того, что некорректное неявное преобразование кусает вас. Если это не сработает, сообщите мне, и я отвечу ответ.

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