MySQL Wildcards-Tutorial: Like, NOT Like, Escape, ( % ), ( _ )
Was sind MySQL Platzhalter?
MySQL Wildcards sind Zeichen, die bei der Suche nach Daten mit komplexen Kriterien helfen. Platzhalter werden in Verbindung mit dem Vergleichsoperator LIKE oder dem Vergleichsoperator NOT LIKE verwendet.
Warum WildCards verwenden?
Wenn Sie mit der Verwendung von SQL vertraut sind, denken Sie vielleicht, dass Sie mit der SELECT- und WHERE-Klausel nach beliebigen komplexen Daten suchen können. Warum dann Platzhalter verwenden?
Bevor wir diese Frage beantworten, schauen wir uns ein Beispiel an. Angenommen, die Marketingabteilung der Myflix-Videothek hat Marketingaktionen in der Stadt Texas durchgeführt und möchte Feedback zur Anzahl der Mitglieder erhalten.
die aus Texas registriert sind, können Sie die folgende SELECT-Anweisung zusammen mit der WHERE-Klausel verwenden, um die gewünschten Informationen zu erhalten.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Wie Sie der obigen Abfrage entnehmen können, ist das „WHERE-Klausel” wird komplex. Die Verwendung von Platzhaltern vereinfacht jedoch die Abfrage, da wir etwas Einfaches wie das unten gezeigte Skript verwenden können.
SELECT * FROM members WHERE postal_address like '% TX';
Kurz gesagt, Wildcards ermöglichen es uns, leistungsstarke Suchmaschinen in unsere datengesteuerten Anwendungen zu integrieren.
Arten von Platzhaltern
% Der Prozentanteil
% Das Prozentzeichen wird verwendet, um ein Muster anzugeben Null (0) oder mehr Zeichen. Es hat die folgende grundlegende Syntax.
SELECT statements... WHERE fieldname LIKE 'xxx%';
HIER
- "SELECT-Anweisung…“ ist der Standard-SQL-SELECT-Befehl.
- „WHERE“ ist das Schlüsselwort, mit dem der Filter angewendet wird.
- „LIKE“ ist der Vergleichsoperator, der in Verbindung mit Platzhaltern verwendet wird
- „xxx“ ist ein beliebiges angegebenes Startmuster, z. B. ein einzelnes Zeichen oder mehr, und „%“ entspricht einer beliebigen Anzahl von Zeichen beginnend bei Null (0).
Um die obige Aussage vollständig zu verstehen, schauen wir uns ein praktisches Beispiel an
Angenommen, wir möchten alle Filme erhalten, deren Titel das Wort „Code“ enthält, dann würden wir den Prozent-Platzhalter verwenden, um einen Mustervergleich auf beiden Seiten des Wortes „Code“ durchzuführen. Nachfolgend finden Sie die SQL-Anweisung, mit der Sie die gewünschten Ergebnisse erzielen können.
SELECT * FROM movies WHERE title LIKE '%code%';
Ausführen des obigen Skripts in MySQL Werkbank gegen die myflixdb liefert uns die unten gezeigten Ergebnisse.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Beachten Sie, dass das Suchwort „Code“ auch dann in unserem Ergebnissatz zurückgegeben wird, wenn es am Anfang oder Ende des Titels erscheint. Dies liegt daran, dass unser Code am Anfang eine beliebige Anzahl von Zeichen enthält und dann mit dem Muster „Code“ übereinstimmt, gefolgt von einer beliebigen Anzahl von Zeichen am Ende.
Ändern wir nun unser obiges Skript so, dass der Prozent-Platzhalter nur am Anfang der Suchkriterien eingefügt wird.
SELECT * FROM movies WHERE title LIKE '%code';
Ausführen des obigen Skripts in MySQL Workbench gegen die myflixdb liefert uns die unten gezeigten Ergebnisse.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Beachten Sie, dass nur ein Datensatz aus der Datenbank zurückgegeben wurde. Dies liegt daran, dass unser Code eine beliebige Anzahl von Zeichen am Anfang des Filmtitels abgleicht und nur Datensätze erhält, die mit dem Muster „Code“ enden.
Verschieben wir nun den Prozentplatzhalter an das Ende des angegebenen Musters, das abgeglichen werden soll. Das geänderte Skript wird unten angezeigt.
SELECT * FROM movies WHERE title LIKE 'code%';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Beachten Sie, dass nur ein Datensatz aus der Datenbank zurückgegeben wurde. Das liegt daran, dass unser Code mit allen Titeln übereinstimmt, die mit dem Muster „Code“ beginnen, gefolgt von einer beliebigen Anzahl von Zeichen.
_ Unterstrich-Platzhalter
Der Unterstrich-Platzhalter wird verwendet passt genau zu einem Zeichen. Nehmen wir an, wir möchten nach allen Filmen suchen, die in den Jahren 200x veröffentlicht wurden, wobei x genau ein Zeichen ist, das einen beliebigen Wert haben kann. Um dies zu erreichen, würden wir den Unterstrich-Platzhalter verwenden. Das folgende Skript wählt alle Filme aus, die im Jahr „200x“ veröffentlicht wurden.
SELECT * FROM movies WHERE year_released LIKE '200_';
Ausführen des obigen Skripts in MySQL Workbench gegen die myflixdb liefert uns die unten gezeigten Ergebnisse.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Beachten Sie, dass in unserem Ergebnissatz nur Filme zurückgegeben wurden, die 200 Follower von einem beliebigen Zeichen im Feld „Jahr der Veröffentlichung“ haben. Dies liegt daran, dass der Unterstrich-Platzhalter mit dem Muster 200 gefolgt von einem beliebigen einzelnen Zeichen übereinstimmte
Nicht wie
Der logische Operator „NICHT“ kann zusammen mit den Platzhaltern verwendet werden, um Zeilen zurückzugeben, die nicht dem angegebenen Muster entsprechen.
Angenommen, wir möchten Filme abrufen, die nicht im Jahr 200x veröffentlicht wurden. Wir würden den logischen Operator NOT zusammen mit dem Unterstrich-Platzhalter verwenden, um unsere Ergebnisse zu erhalten. Unten sehen Sie das Skript, das dies tut.
SELECT * FROM movies WHERE year_released NOT LIKE '200_';
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
8 | Underworld-Awakeninh | Michahel Eal | 2012 | 6 |
Beachten Sie, dass in unserem Ergebnissatz nur Filme zurückgegeben wurden, deren Erscheinungsjahr nicht mit 200 beginnt. Dies liegt daran, dass wir bei unserer Platzhaltermustersuche den logischen Operator NOT verwendet haben.
Escape-Schlüsselwort
Das Schlüsselwort ESCAPE wird dazu verwendet Escape-Muster-Übereinstimmungszeichen wie der (%)-Prozentsatz und der Unterstrich (_), wenn sie Teil der Daten sind.
Nehmen wir an, wir möchten nach der Zeichenfolge „67 %“ suchen, die wir verwenden können.
LIKE '67#%%' ESCAPE '#';
Wenn wir nach dem Film „67 % Guilty“ suchen möchten, können wir dazu das unten gezeigte Skript verwenden.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Beachten Sie das doppelte „%%“ in der LIKE-Klausel, die erste in Rot „%„wird als Teil der zu suchenden Zeichenfolge behandelt. Der andere wird verwendet, um eine beliebige Anzahl nachfolgender Zeichen abzugleichen.
Die gleiche Abfrage funktioniert auch, wenn wir so etwas wie verwenden
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Zusammenfassung
- Leistungsstarke Tools wie „Like & Wildcards“, die bei der Suche nach Daten mit komplexen Mustern helfen.
- Es gibt eine Reihe von Platzhaltern, die den Prozentsatz, den Unterstrich und die Zeichenliste umfassen (nicht unterstützt von). MySQL ) unter anderen
- Der Prozent-Platzhalter wird verwendet, um eine beliebige Anzahl von Zeichen ab Null (0) und mehr abzugleichen.
- Der Unterstrich-Platzhalter wird verwendet, um genau ein Zeichen zu finden.