Was sind MySQL-Platzhalter?
MySQL-Platzhalter sind Zeichen, mit deren Hilfe Daten gesucht werden können, die komplexen Kriterien entsprechen. Platzhalter werden in Verbindung mit dem Vergleichsoperator LIKE oder mit dem Vergleichsoperator NOT LIKE verwendet.
Warum WildCards verwenden?
Wenn Sie mit der Verwendung von SQL vertraut sind, denken Sie möglicherweise, dass Sie mit den Klauseln SELECT und WHERE nach komplexen Daten suchen können. Warum dann Wildcards verwenden?
Bevor wir diese Frage beantworten, schauen wir uns ein Beispiel an. Angenommen, die Marketingabteilung der Myflix-Videobibliothek hat Marketingaktionen in der Stadt Texas durchgeführt und möchte ein Feedback zur Anzahl der Mitglieder erhalten
Wenn Sie sich aus Texas registriert haben, können Sie die folgende SELECT-Anweisung zusammen mit der WHERE-Klausel verwenden, um die gewünschten Informationen abzurufen.
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, wird die "WHERE-Klausel" 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, mit Platzhaltern können wir Power-Suchmaschinen für unsere datengesteuerten Anwendungen entwickeln.
Arten von Platzhaltern
% Der Prozentanteil
% Das Prozentzeichen wird verwendet, um ein Muster mit null (0) oder mehr Zeichen anzugeben . Es hat die folgende grundlegende Syntax.
SELECT statements… WHERE fieldname LIKE 'xxx%';
HIER
- "SELECT-Anweisung ..." ist der Standardbefehl für SQL SELECT.
- "WO" ist das Schlüsselwort zum Anwenden des Filters.
- "LIKE" ist der Vergleichsoperator, der in Verbindung mit Platzhaltern verwendet wird
- 'xxx' ist ein bestimmtes Startmuster wie ein einzelnes Zeichen oder mehr und "%" entspricht einer beliebigen Anzahl von Zeichen ab Null (0).
Schauen wir uns ein praktisches Beispiel an, um die obige Aussage vollständig zu verstehen
Angenommen, wir möchten alle Filme abrufen, die das Wort "Code" als Teil des Titels enthalten. Wir würden den prozentualen Platzhalter verwenden, um eine Musterübereinstimmung auf beiden Seiten des Wortes "Code" durchzuführen. Unten finden Sie die SQL-Anweisung, mit der die gewünschten Ergebnisse erzielt werden können.
SELECT * FROM movies WHERE title LIKE '%code%';
Wenn Sie das obige Skript in der MySQL-Workbench gegen die myflixdb ausführen, erhalten Sie 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 Suchschlüsselwort "Code" auch dann am Anfang oder Ende des Titels in unserer Ergebnismenge zurückgegeben wird. 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.
Lassen Sie uns nun unser obiges Skript so ändern, dass der prozentuale Platzhalter nur am Anfang der Suchkriterien enthalten ist.
SELECT * FROM movies WHERE title LIKE '%code';
Wenn Sie das obige Skript in der MySQL-Workbench gegen die myflixdb ausführen, erhalten Sie 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 mit einer beliebigen Anzahl von Zeichen am Anfang des Filmtitels übereinstimmt und nur Datensätze erhält, die mit dem Muster "Code" enden.
Verschieben wir nun den prozentualen Platzhalter an das Ende des angegebenen Musters, das abgeglichen werden soll. Das geänderte Skript wird unten gezeigt.
SELECT * FROM movies WHERE title LIKE 'code%';Wenn Sie das obige Skript in der MySQL-Workbench gegen die myflixdb ausführen, erhalten Sie die unten gezeigten Ergebnisse.
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. Dies liegt daran, dass unser Code mit allen Titeln übereinstimmt, die mit dem Muster "Code" beginnen, gefolgt von einer beliebigen Anzahl von Zeichen.
_ Platzhalter unterstreichen
Der Unterstrich-Platzhalter wird verwendet, um genau einem Zeichen zu entsprechen . Nehmen wir an, wir möchten nach allen Filmen suchen, die in den 200x-Jahren veröffentlicht wurden, wobei x genau ein Zeichen ist, das einen beliebigen Wert haben kann. Wir würden den unterstrichenen Platzhalter verwenden, um dies zu erreichen. Das folgende Skript wählt alle Filme aus, die im Jahr "200x" veröffentlicht wurden.
SELECT * FROM movies WHERE year_released LIKE '200_';
Wenn Sie das obige Skript in der MySQL-Workbench gegen die myflixdb ausführen, erhalten Sie 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 unserer Ergebnismenge nur Filme zurückgegeben wurden, denen 200 Zeichen in dem veröffentlichten Feldjahr folgen. Dies liegt daran, dass der Unterstrich-Platzhalter mit dem Muster 200 übereinstimmt, gefolgt von einem einzelnen Zeichen
Nicht wie
Der logische Operator NOT kann zusammen mit den Platzhaltern verwendet werden, um Zeilen zurückzugeben, die nicht dem angegebenen Muster entsprechen.
Angenommen, wir möchten Filme bekommen, die im Jahr 200x nicht veröffentlicht wurden. Wir würden den logischen Operator NOT zusammen mit dem Unterstrich-Platzhalter verwenden, um unsere Ergebnisse zu erhalten. Unten ist das Skript, das das macht.
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 unserer Ergebnismenge nur Filme zurückgegeben werden, die im veröffentlichten Jahr nicht mit 200 beginnen. Dies liegt daran, dass wir bei unserer Wildcard-Mustersuche den logischen Operator NOT verwendet haben.
Schlüsselwort Escape.
Das Schlüsselwort ESCAPE wird verwendet, um Mustervergleichszeichen wie (%) Prozentsatz und Unterstrich (_) zu umgehen, 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 '#';
Man beachte das doppelte „ % %“ in der LIKE - Klausel, die ersten in rot „ % “ als Teil des Strings behandelt wird gesucht. Das andere wird verwendet, um eine beliebige Anzahl von Zeichen zu finden, die folgen.
Die gleiche Abfrage funktioniert auch, wenn wir so etwas verwenden
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Zusammenfassung
- Like & Wildcards leistungsstarke Tools, mit denen Sie Daten suchen können, die komplexen Mustern entsprechen.
- Es gibt eine Reihe von Platzhaltern, die unter anderem den Prozentsatz, den Unterstrich und die Zeichenliste (von MySQL nicht unterstützt) enthalten
- Der prozentuale Platzhalter wird verwendet, um eine beliebige Anzahl von Zeichen ab Null (0) und mehr abzugleichen.
- Der Unterstrich-Platzhalter wird verwendet, um genau einem Zeichen zu entsprechen.