MySQL Wildcards Tutorial: Like, NOT Like, Escape, (%), (_)

Innholdsfortegnelse:

Anonim

Hva er MySQL jokertegn?

MySQL jokertegn er tegn som hjelper med å søke i data som samsvarer med komplekse kriterier. Jokertegn brukes sammen med LIKE-sammenligningsoperatøren eller med NOT LIKE-sammenligningsoperatøren.

Hvorfor bruke WildCards?

Hvis du er kjent med å bruke SQL, kan du tro at du kan søke etter komplekse data ved å bruke SELECT og WHERE-setningen. Så hvorfor bruke jokertegn?

La oss se på et eksempel før vi svarer på det spørsmålet. Anta at markedsavdelingen i Myflix videobibliotek gjennomførte markedsføringskampanjer i byen Texas og ønsker å få tilbakemelding på antall medlemmer

som er registrert fra Texas, kan du bruke følgende SELECT-setning sammen med WHERE-klausulen for å få ønsket informasjon.

SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';

Som du kan se fra spørringen ovenfor, blir "WHERE-setningen" komplisert. Bruk av jokertegn forenkler imidlertid spørringen, ettersom vi kan bruke noe enkelt som skriptet vist nedenfor.

SELECT * FROM members WHERE postal_address like '% TX';

Kort sagt, jokertegn lar oss utvikle kraftige søkemotorer til våre datadrevne applikasjoner.

Typer jokertegn

% prosenten

% prosenttegnet brukes til å spesifisere et mønster på null (0) eller flere tegn . Den har følgende grunnleggende syntaks.

SELECT statements… WHERE fieldname LIKE 'xxx%';

HER

  • "SELECT-setning ..." er standard SQL SELECT-kommando.
  • "WHERE" er stikkordet som brukes til å bruke filteret.
  • "LIKE" er sammenligningsoperatøren som brukes sammen med jokertegn
  • 'xxx' er et spesifisert startmønster, for eksempel et enkelt tegn eller mer, og "%" samsvarer med et hvilket som helst antall tegn som starter fra null (0).

For å fullt ut sette pris på ovenstående uttalelse, la oss se på et praktisk eksempel

Anta at vi ønsker å få alle filmene som har ordet "kode" som en del av tittelen, vi bruker prosentandelen jokertegn til å utføre en mønstermatch på begge sider av ordet "kode". Nedenfor er SQL-setningen som kan brukes til å oppnå de ønskede resultatene.

SELECT * FROM movies WHERE title LIKE '%code%';

Å utføre ovennevnte skript i MySQL arbeidsbenk mot myflixdb gir oss resultatene vist nedenfor.

 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL
7 Davinci Code NULL NULL 6

Legg merke til at selv om søkeordet "kode" vises i begynnelsen eller slutten av tittelen, returneres det fortsatt i vårt resultatsett. Dette er fordi koden vår inkluderer et hvilket som helst antall tegn i begynnelsen, og deretter samsvarer med mønsteret "kode" etterfulgt av et hvilket som helst antall tegn på slutten.

La oss nå endre skriptet vårt over slik at det kun inkluderer prosentandelen jokertegn i begynnelsen av søkekriteriene.

SELECT * FROM movies WHERE title LIKE '%code';

Å utføre ovennevnte skript i MySQL arbeidsbenk mot myflixdb gir oss resultatene vist nedenfor.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Legg merke til at bare én post er returnert fra databasen. Dette er fordi koden vår samsvarer med et hvilket som helst antall tegn i begynnelsen av filmtittelen og bare får poster som ender med mønsteret "kode".

La oss nå flytte prosentandelen jokertegn til slutten av det angitte mønsteret som skal matches. Det modifiserte skriptet er vist nedenfor.

SELECT * FROM movies WHERE title LIKE 'code%';
Å utføre ovennevnte skript i MySQL arbeidsbenk mot myflixdb gir oss resultatene vist nedenfor.
 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

Legg merke til at bare én post er returnert fra databasen. Dette er fordi koden vår samsvarer med alle titler som begynner med mønsteret "kode" etterfulgt av et hvilket som helst antall tegn.

_ understreker jokertegn

Understreket jokertegn brukes til å matche nøyaktig ett tegn . La oss anta at vi vil søke etter alle filmene som ble utgitt i årene 200x der x er nøyaktig ett tegn som kan være hvilken som helst verdi. Vi bruker understreket wild card for å oppnå det. Manuset nedenfor velger alle filmene som ble utgitt i året "200x"

SELECT * FROM movies WHERE year_released LIKE '200_';

Å utføre ovennevnte skript i MySQL arbeidsbenk mot myflixdb gir oss resultatene vist nedenfor.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
9 Honey mooners Jhon Shultz 2005 8

Legg merke til at bare filmer som har 200 følger med en hvilken som helst karakter i utgivelsesåret ble returnert i resultatsettet vårt. Dette er fordi understreket jokertegn matchet mønsteret 200 etterfulgt av et enkelt tegn

Ikke like

Den IKKE logiske operatoren kan brukes sammen med jokertegnene for å returnere rader som ikke samsvarer med det angitte mønsteret.

Anta at vi ønsker å få filmer som ikke ble utgitt i 200x. Vi bruker den IKKE logiske operatøren sammen med understreket jokertegn for å få resultatene våre. Nedenfor er skriptet som gjør det.

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

Legg merke til at bare filmer som ikke starter med 200 i utgivelsesåret har blitt returnert i resultatsettet vårt. Dette er fordi vi brukte den IKKE logiske operatøren i søket med jokertegn.

Escape-søkeord.

ESCAPE-nøkkelordet brukes til å unnslippe mønstermatchende tegn som (%) prosent og understreking (_) hvis de utgjør en del av dataene.

La oss anta at vi vil se etter strengen "67%" vi kan bruke;

LIKE '67#%%' ESCAPE '#';

Hvis vi vil søke etter filmen "67% Guilty", kan vi bruke manuset vist nedenfor for å gjøre det.

SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';

Legg merke til den doble " %% " i LIKE-setningen, den første i rødt " % " behandles som en del av strengen det skal søkes etter. Den andre brukes til å matche et hvilket som helst antall tegn som følger.

Den samme spørringen vil også fungere hvis vi bruker noe lignende

SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';

Sammendrag

  • Like & Wildcards kraftige verktøy som hjelper med å søke i data som samsvarer med komplekse mønstre.
  • Det er en rekke jokertegn som inkluderer blant annet prosentandel, understreking og charlist (ikke støttet av MySQL)
  • Prosentvis jokertegn brukes til å matche et hvilket som helst antall tegn som starter fra null (0) og mer.
  • Understreket jokertegn brukes til å matche nøyaktig ett tegn.