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 KLICKEN

  • "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%';
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
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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: