SQL для получения различных значений и удаления записей с указанным знаком c не работает - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть простая таблица с именем Test и одним столбцом с именем ID. В этой таблице есть несколько странных идентификаторов, эти значения содержат #. Кроме того, в таблице есть дубликаты.

Это выглядит так:

enter image description here

Я попробовал первый раз

SELECT DISTINCT ID
FROM Test
WHERE Test.ID NOT LIKE '%#%';

Тем не менее, записи с # все еще находятся в.

Затем я попытался сделать одну вещь за другой, поэтому начните с простого запроса, чтобы удалить эти записи:

SELECT ID
FROM Test
WHERE Test.ID NOT LIKE '%#%';

This не работает? Почему? Как будет выглядеть правильно, чтобы удалить эти записи, которые содержат # и удалить дубликаты?

Ответы [ 3 ]

1 голос
/ 01 апреля 2020

Символ # является подстановочным знаком для LIKE в MS Access. Используйте это:

SELECT DISTINCT ID
FROM Test
WHERE ID NOT LIKE '*[#]*';
1 голос
/ 02 апреля 2020

В качестве альтернативы используйте метод, подобный ANSI, ALIKE, чтобы продолжить использовать % для подстановочного знака, где # не служит оператором (требуется экранирование):

SELECT DISTINCT ID
FROM Test
WHERE ID NOT ALIKE '%#%';
1 голос
/ 01 апреля 2020

Подстановочный знак для LIKE в MS Access равен *, а не %. И так же # Так попробуйте это:

SELECT DISTINCT ID
FROM Test
WHERE Test.ID NOT LIKE '*[#]*';

Или:

WHERE INSTR(Test.ID, "#") > 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...