Mam prostą tabelę o nazwie Test z jedną kolumną o nazwie ID. W tej tabeli są dziwne identyfikatory, te wartości zawierają #. Ponadto w tabeli znajdują się duplikaty.

To wygląda tak:

enter image description here

Najpierw spróbowałem

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

Jednak wpisy z # są nadal dostępne.

Następnie próbowałem zrobić jedną rzecz po drugiej, więc zacznij od prostego zapytania, aby usunąć te wpisy:

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

To nie działa? Dlaczego? Jak wyglądałoby poprawne usunięcie tych wpisów, które zawierają znak # i usunięcie duplikatów?

0
Stat Tistician 1 kwiecień 2020, 20:19

3 odpowiedzi

Najlepsza odpowiedź

Symbol wieloznaczny dla LIKE w MS Access to *, a nie %. I tak jest # Więc spróbuj tego:

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

Lub:

WHERE INSTR(Test.ID, "#") > 0
1
Gordon Linoff 1 kwiecień 2020, 17:55

Alternatywnie, użyj metody podobnej do ANSI, ALIKE, aby nadal używać % dla symbolu wieloznacznego, gdzie # nie służy jako operator (wymaga zmiany znaczenia):

SELECT DISTINCT ID
FROM Test
WHERE ID NOT ALIKE '%#%';
1
Parfait 1 kwiecień 2020, 22:27

Znak # jest symbolem wieloznacznym dla LIKE w MS Access.
Użyj tego:

SELECT DISTINCT ID
FROM Test
WHERE ID NOT LIKE '*[#]*';
1
forpas 1 kwiecień 2020, 17:53