MySQL - NICHT REGEXP Operator
Einführung in den NICHT REGEXP Operator
Hallo, angehende Datenbankenthusiasten! Heute tauchen wir ein in die faszinierende Welt des MySQL-NICHT REGEXP Operators. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich mit der gleichen Begeisterung durch dieses Thema zu führen, die ich verspürte, als ich es das erste Mal lernte. Vertraue mir, bis zum Ende dieses Unterrichts wirst du dieses mächtige Werkzeug wie ein Datenbank-Zauberer einsetzen können!
Was ist NICHT REGEXP?
Bevor wir ins Detail gehen, lassen Sie uns verstehen, was NICHT REGEXP eigentlich bedeutet. In einfachen Worten ist NICHT REGEXP wie ein Türsteher in einem exklusiven Club, aber anstatt Menschen hereinzulassen, hält es bestimmte Muster aus unseren Suchergebnissen fern.
REGEXP steht für Regulärer Ausdruck, was eine Abfolge von Zeichen ist, die ein Suchmuster bildet. Wenn wir NICHT voranstellen, sagen wir im Grunde: "Hey MySQL, zeige mir alles, was nicht auf dieses Muster passt!"
MySQL NICHT REGEXP Operator in der Praxis
Lassen Sie uns die Ärmel hochwerfen und in die Praxis eintauchen. Stellen wir uns eine Tabelle namens book_club
mit der Spalte book_title
vor. Wir möchten alle Bücher finden, die das Wort "Mystery" in ihren Titeln nicht enthalten.
SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP 'Mystery';
In diesem Beispiel gibt MySQL alle Buchtitel zurück, die das Wort "Mystery" nicht enthalten. Es ist, als ob du deinem Bibliothekar alle Bücher verlangst, die keine Mystery Romane sind - quite cool, oder?
Gross- und Kleinschreibung
Ein wichtiger Punkt, den man beachten sollte, ist, dass REGEXP (und NICHT REGEXP) standardmäßig grosskleinschreibungeinsensitiv sind. Daher würden 'Mystery', 'Mystery' und sogar 'mYsTeRy' alle in unserem vorherigen Beispiel ausgeschlossen werden. Wenn du grosskleinschreibungssensitivsuchen möchtest, kannst du das Schlüsselwort BINARY verwenden:
SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP BINARY 'Mystery';
Jetzt wird nur 'Mystery' (alles klein) ausgeschlossen, aber 'Mystery' oder 'MYSTERY' würden immer noch in unseren Ergebnissen erscheinen.
Fortgeschrittene NICHT REGEXP Muster
Lassen Sie uns das Tempo erhöhen und uns einige komplexere Muster ansehen. Denke daran, dass NICHT REGEXP unglaublich vielseitig ist!
Ausschluss mehrerer Wörter
Was ist, wenn wir Bücher ausschließen möchten, die entweder "Mystery" oder "Thriller" im Titel haben?
SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP 'Mystery|Thriller';
Das |
Symbol verhält sich wie ein "oder" Operator. Diese Abfrage gibt alle Bücher zurück, die weder "Mystery" noch "Thriller" in ihren Titeln haben.
Ausschluss von Wörtern am Anfang oder Ende
Vielleicht möchten wir Bücher finden, die nicht mit "The" beginnen:
SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP '^The';
Das ^
Symbol verankert das Muster am Anfang der Zeichenkette. Ähnlich, wenn wir Bücher finden möchten, die nicht mit "Chronicles" enden, könnten wir folgendes verwenden:
SELECT book_title
FROM book_club
WHERE book_title NOT REGEXP 'Chronicles$';
Das $
Symbol verankert das Muster am Ende der Zeichenkette.
NICHT REGEXP Operator in einem.Client Programm
Nun sehen wir, wie wir NICHT REGEXP in einem Client-Programm verwenden können. Ich werde Python mit der MySQL Connector Bibliothek als Beispiel verwenden, aber das Konzept ist in anderen Sprachen ähnlich.
import mysql.connector
# Verbindung herstellen
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="book_club_db"
)
mycursor = mydb.cursor()
# NICHT REGEXP Abfrage ausführen
mycursor.execute("SELECT book_title FROM book_club WHERE book_title NOT REGEXP 'Fantasy|Sci-Fi'")
# Ergebnisse abrufen und ausgeben
for x in mycursor:
print(x)
Dieses Skript stellt eine Verbindung zur Datenbank her, führt eine Abfrage aus, um alle Bücher zu finden, die nicht "Fantasy" oder "Sci-Fi" im Titel haben, und gibt die Ergebnisse aus.
Häufige NICHT REGEXP Muster
Schauen wir uns einige häufige Muster an, die du nützlich finden könntest:
Muster | Beschreibung | Beispiel |
---|---|---|
[^...] |
Passt auf jedes Zeichen, das nicht in den Klammern ist |
'[^aeiou]' passt auf jedes Nicht-Vokalzeichen |
.* |
Passt auf jede Zeichenfolge |
'not.*end' passt auf Zeichenfolgen mit "not" und "end" und allem dazwischen |
\d |
Passt auf jede Ziffer |
'\d' passt auf jede einzelne Ziffer |
\D |
Passt auf jedes Nicht-Zeichen |
'\D' passt auf jedes einzelne Nicht-Zeichen |
\s |
Passt auf jedes Leerzeichen |
'\s' passt auf Leerzeichen, Tabulatoren, Zeilenumbrüche |
\S |
Passt auf jedes Nicht-Leerzeichen |
'\S' passt auf jedes Zeichen, das kein Leerzeichen, Tabulator oder Zeilenumbruch ist |
Schlussfolgerung
Und dort hast du es, zukünftige Datenbank-Gurus! Wir haben den NICHT REGEXP Operator erkundet, von seiner grundlegenden Verwendung bis zu den fortgeschrittenen Mustern. Denke daran, wie jedes mächtige Werkzeug erfordert es Übung, um es zu meistern. Habe keine Angst, verschiedene Muster auszuprobieren und zu sehen, welche Ergebnisse du erhältst.
In meinen Jahren des Unterrichtens habe ich seen Studenten von der Verwirrung über NICHT REGEXP bis zur mühelosen Verwendung in komplexen Abfragen gehen. Du bist auf dem besten Weg, ihnen beizutreten!
Bevor ich gehe, hier ist ein kleiner Datenbank-Witz für dich: Warum hat der Entwickler seinen Job gekündigt? Er konnte die Diskussion über sein Gehalt nicht TABLE (Tabelle)! (Verstanden? TABLE? Na gut, ich geh raus...)
Weiter üben, bleib neugierig und viel Spaß beim Abfragen!
Credits: Image by storyset