MySQL - NOT LIKE Operator
Hallo, angehende Datenbankenthusiasten! Heute tauchen wir in die wunderbare Welt von MySQL ein und erkunden ein mächtiges Werkzeug in unserem SQL-Werkzeugkasten: den NOT LIKE Operator. Als Ihr freundlicher Nachbarschafts-Computerlehrer freue ich mich darauf, Sie auf dieser Reise zu begleiten, selbst wenn Sie noch nie eine Zeile Code geschrieben haben. Also, schnallen Sie sich an und los geht's!
MySQL NOT LIKE Operator
Der NOT LIKE Operator ist wie das rebellische Geschwisterkind des LIKE Operators. Während LIKE uns dabei hilft, passende Muster zu finden, tut NOT LIKE das Gegenteil – er hilft uns, alles zu finden, das nicht auf ein bestimmtes Muster passt. Es ist so, als ob Sie Ihrem Computer sagen: "Zeige mir alles außer das!"
Lassen Sie uns mit einem einfachen Beispiel beginnen. Stellen wir uns eine Tabelle namens books
mit einer Spalte title
vor. Wenn wir alle Bücher finden möchten, die nicht mit dem Buchstaben 'A' beginnen, könnten wir folgendes verwenden:
SELECT * FROM books WHERE title NOT LIKE 'A%';
Hier ist, was dieser Code macht:
-
SELECT *
: Das sagt MySQL, alle Spalten auszuwählen. -
FROM books
: Wir schauen in der Tabellebooks
. -
WHERE title NOT LIKE 'A%'
: Das ist der magische Teil. Es sagt: "Gib mir alle Titel, die nicht mit 'A' beginnen."
Das %
ist ein Joker, der bedeutet "irgendetwas kann folgen". Also 'A%'
bedeutet "A gefolgt von irgendetwas."
Verwendung des NOT LIKE Operators mit Jokerzeichen
Nun, lassen Sie uns mit einigen Jokerzeichen aufpeppen! MySQL bietet zwei Haupt-Jokerzeichen:
-
%
: Vertreibt null, eine oder mehrere Zeichen -
_
: Vertreibt ein einzelnes Zeichen
Hier ist eine Tabelle mit häufigen Jokerzeichenverwendungen:
Jokerzeichen | Beschreibung | Beispiel |
---|---|---|
% |
Beliebige Anzahl von Zeichen | '%abenteuer%' |
_ |
Ein einzelnes Zeichen | '_at' |
[charlist] |
Beliebiges einzelnes Zeichen aus charlist | '[abc]%' |
[^charlist] oder [!charlist]
|
Beliebiges einzelnes Zeichen nicht in charlist | '[^abc]%' |
Angenommen, wir möchten alle Buchtitel finden, die nicht mit "ing" enden:
SELECT * FROM books WHERE title NOT LIKE '%ing';
Oder vielleicht Bücher, die nicht genau drei Zeichen haben:
SELECT * FROM books WHERE title NOT LIKE '___';
Jeder Unterstrich repräsentiert ein Zeichen,also '___'
bedeutet "genau drei Zeichen."
Verwendung des NOT LIKE Operators mit AND/OR Operatoren
Manchmal müssen wir mehrere Bedingungen kombinieren. Das ist, wo AND und OR nützlich sind. Lassen Sie uns Bücher finden, die weder mit 'T' beginnen noch mit 'ing' enden:
SELECT * FROM books
WHERE title NOT LIKE 'T%'
AND title NOT LIKE '%ing';
Oder vielleicht Bücher, die weder mit 'A' beginnen noch mit 'z' enden:
SELECT * FROM books
WHERE title NOT LIKE 'A%'
OR title NOT LIKE '%z';
Denken Sie daran, AND bedeutet, dass beide Bedingungen wahr sein müssen, während OR bedeutet, dass mindestens eine Bedingung wahr sein muss.
NOT LIKE Operator auf Zeichenfolgen
Der NOT LIKE Operator ist besonders nützlich, wenn man mit Zeichenfolgen arbeitet. Stellen wir uns eine customers
Tabelle vor und wir möchten alle Kunden finden, deren Namen 'son' nicht enthalten:
SELECT * FROM customers
WHERE name NOT LIKE '%son%';
Diese Abfrage wird alle Namen zurückgeben, die 'son' nirgendwo enthalten. Also werden 'Johnson' und 'Sonny' ausgeschlossen, aber 'Smith' und 'Brown' werden eingeschlossen.
Hier ist ein lustiger Kniff: Was wäre, wenn wir Namen finden möchten, bei denen 'a' nicht der zweite Buchstabe ist?
SELECT * FROM customers
WHERE name NOT LIKE '_a%';
Diese Abfrage sagt: "Zeige mir alle Namen, bei denen der zweite Buchstabe nicht 'a' ist."
NOT LIKE Operator mit einem Client-Programm verwenden
Nun, lassen Sie uns all dieses Wissen in die Praxis umsetzen, indem wir ein MySQL-Client-Programm verwenden. Ich werde den MySQL-Befehlszeilen-Client für dieses Beispiel verwenden, aber die Prinzipien gelten für jeden MySQL-Client.
Zuerst erstellen wir eine einfache employees
Tabelle:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
position VARCHAR(50)
);
INSERT INTO employees (name, position) VALUES
('John Doe', 'Manager'),
('Jane Smith', 'Developer'),
('Bob Johnson', 'Designer'),
('Alice Brown', 'Tester');
Nun finden wir alle Mitarbeiter, deren Positionen nicht mit 'D' beginnen:
SELECT * FROM employees
WHERE position NOT LIKE 'D%';
Das sollte John Doe (Manager) und Alice Brown (Tester) zurückgeben.
Lassen Sie uns etwas komplexeres versuchen. Wir möchten Mitarbeiter finden, deren Namen nicht mit 'J' beginnen und deren Positionen nicht mit 'er' enden:
SELECT * FROM employees
WHERE name NOT LIKE 'J%'
AND position NOT LIKE '%er';
Das sollte Alice Brown (Tester) zurückgeben.
Und da haben Sie es! Sie haben den NOT LIKE Operator in MySQL gemeistert. Denken Sie daran, Übung macht den Meister, also fürchten Sie sich nicht, Ihre eigenen Abfragen auszuprobieren. Wer weiß? Vielleicht entdecken Sie interessante Muster in Ihren Daten, die Sie vorher nie bemerkt haben!
Als wir uns verabschieden, möchte ich Ihnen ein kleines Geheimnis aus meinen Jahren des Unterrichtens mitteilen: Der beste Weg, SQL zu lernen, ist es wie ein Puzzle-Spiel zu behandeln. Jede Abfrage ist ein Rätsel, das darauf wartet, gelöst zu werden. Also, setzen Sie Ihre Detektivmütze auf und beginnen Sie mit der Erkundung Ihrer Daten. Viel Spaß beim Abfragen, zukünftige Datenbankzauberer!
Credits: Image by storyset