In MySQL können Sie NOT LIKE
verwenden um eine Negation des LIKE
durchzuführen Operator. Mit anderen Worten, NOT LIKE
gibt das gegenteilige Ergebnis zu LIKE
zurück .
Wenn die Zeichenfolge mit dem bereitgestellten Muster übereinstimmt, ist das Ergebnis 0
, andernfalls ist es 1
.
Das Muster muss nicht unbedingt eine wörtliche Zeichenfolge sein. Diese Funktion kann mit Zeichenfolgenausdrücken und Tabellenspalten verwendet werden.
Syntax
Die Syntax sieht so aus:
expr NOT LIKE pat [ESCAPE 'escape_char']
Wobei expr
ist die Eingabezeichenfolge und pat
ist das Muster, für das Sie die Zeichenfolge testen.
Das optionale ESCAPE
-Klausel können Sie ein Escape-Zeichen angeben. Das Standard-Escape-Zeichen ist \
, sodass Sie diese Klausel weglassen können, wenn Sie dies nicht ändern müssen.
Dieser Operator entspricht dem folgenden Vorgang:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel für die Verwendung dieses Operators in einem SELECT
Aussage:
SELECT 'Charlie' NOT LIKE 'Char%';
Ergebnis:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
Der Rückgabewert ist in diesem Fall 0
was bedeutet, dass die Eingabezeichenfolge tat stimmt eigentlich mit dem Muster überein.
Beispiel 2 – Im Vergleich zu LIKE
Hier wird es mit LIKE
verglichen :
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Ergebnis:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Beispiel 3 – Eine äquivalente Syntax
Wie bereits erwähnt, NOT LIKE
ist das Äquivalent zur Verwendung von NOT
logischer Operator gegen LIKE
Operator. Folgendes meine ich:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Ergebnis:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Beispiel 4 – Ein Datenbankbeispiel
Das LIKE
Der Operator wird oft innerhalb eines WHERE
verwendet -Klausel eines SELECT
Anweisung beim Abfragen einer Datenbank. Daher NOT LIKE
können in gleicher Weise verwendet werden.
Wenn wir NOT LIKE
verwenden Auf diese Weise werden die Ergebnisse auf die nicht Datensätze eingegrenzt übereinstimmen, aber wir sehen die tatsächlichen Ergebnisse (nicht nur eine 1
oder 0
).
Hier ist ein Beispiel dafür, wie wir diesen Operator in einer Datenbankabfrage verwenden können:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
Ergebnis:
+----------+------------------------+ | 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 | +----------+------------------------+
In diesem Fall war es eine einfache Abfrage, die alle Künstler zurückgibt, deren Namen nicht Beginnen Sie mit dem Buchstaben B .
Hier ist die vollständige Liste der Künstler in dieser Tabelle:
SELECT ArtistId, ArtistName FROM Artists;
Ergebnis:
+----------+------------------------+ | 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 | +----------+------------------------+
Wenn wir also NOT
entfernen (d.h. wir verwenden einfach LIKE
) erhalten wir dieses Ergebnis:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Ergebnis:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Beispiel 5 – Escapezeichen mit dem Backslash-Zeichen
Das Backslash-Zeichen (\
) kann verwendet werden, um eines der Platzhalterzeichen zu maskieren (_
und %
). Hier ist ein Beispiel für eine solche Suche mit und ohne Escape-Zeichen:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Ergebnis:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Beispiel 6 – Der ESCAPE
Klausel
Sie können auch den ESCAPE
verwenden -Klausel, um Ihr eigenes benutzerdefiniertes Escape-Zeichen anzugeben. Hier ist ein Beispiel:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Ergebnis:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Beispiel 7 – Numerische Ausdrücke
Dieser Operator kann für numerische Ausdrücke verwendet werden. Hier ist ein Beispiel:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Ergebnis:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+