W MySQL możesz użyć NOT LIKE
wykonać negację LIKE
operator. Innymi słowy, NOT LIKE
zwraca przeciwny wynik do LIKE
.
Jeśli ciąg pasuje do podanego wzorca, wynikiem jest 0
, w przeciwnym razie jest to 1
.
Wzorzec niekoniecznie musi być dosłownym ciągiem. Ta funkcja może być używana z wyrażeniami łańcuchowymi i kolumnami tabeli.
Składnia
Składnia wygląda tak:
expr NOT LIKE pat [ESCAPE 'escape_char']
Gdzie expr
jest ciągiem wejściowym i pat
to wzorzec, dla którego testujesz ciąg.
Opcjonalny ESCAPE
klauzula umożliwia określenie znaku ucieczki. Domyślny znak ucieczki to \
, więc możesz pominąć tę klauzulę, jeśli nie musisz tego zmieniać.
Ten operator jest odpowiednikiem wykonania następującego zadania:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Przykład 1 – Podstawowe użycie
Oto przykład użycia tego operatora w SELECT
oświadczenie:
SELECT 'Charlie' NOT LIKE 'Char%';
Wynik:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
W tym przypadku zwracana wartość to 0
co oznacza, że ciąg wejściowy zrobił faktycznie pasują do wzoru.
Przykład 2 – w porównaniu z LIKE
Tutaj jest porównany z LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Wynik:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Przykład 3 — równoważna składnia
Jak wspomniano, NOT LIKE
jest odpowiednikiem użycia NOT
operator logiczny względem LIKE
operator. Oto, co mam na myśli:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Wynik:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Przykład 4 – Przykład bazy danych
LIKE
operator jest często używany w WHERE
klauzula SELECT
oświadczenie podczas odpytywania bazy danych. Dlatego NOT LIKE
może być używany w ten sam sposób.
Kiedy używamy NOT LIKE
w ten sposób zawęża wyniki tylko do tych rekordów, które nie pasuje, ale widzimy rzeczywiste wyniki (nie tylko 1
lub 0
).
Oto przykład, jak możemy użyć tego operatora w zapytaniu do bazy danych:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
Wynik:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | +----------+------------------------+
W tym przypadku było to proste zapytanie, które zwraca wszystkich wykonawców, których nazwiska nie zacznij od litery B .
Oto pełna lista artystów w tej tabeli:
SELECT ArtistId, ArtistName FROM Artists;
Wynik:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 4 | Buddy Rich | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 11 | Black Sabbath | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+------------------------+
Więc jeśli usuniemy NOT
(tzn. po prostu używamy LIKE
) otrzymujemy ten wynik:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Wynik:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Przykład 5 – Ucieczka za pomocą znaku odwróconego ukośnika
Znak odwrotnego ukośnika (\
) można użyć do zmiany znaczenia dowolnego symbolu wieloznacznego (_
i %
). Oto przykład takiego wyszukiwania ze znakiem ucieczki i bez niego:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Wynik:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Przykład 6 – ESCAPE
Klauzula
Możesz także użyć ESCAPE
klauzula, aby określić własny niestandardowy znak ucieczki. Oto przykład:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Wynik:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Przykład 7 – Wyrażenia numeryczne
Ten operator może być używany w wyrażeniach liczbowych. Oto przykład:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Wynik:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+