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

Indholdsfortegnelse:

Anonim

Hvad er MySQL Wildcards?

MySQL Wildcards er tegn, der hjælper med at søge data, der matcher komplekse kriterier. Jokertegn bruges sammen med LIKE-sammenligningsoperatøren eller med NOT LIKE-sammenligningsoperatøren.

Hvorfor bruge WildCards?

Hvis du er fortrolig med at bruge SQL, tror du måske, at du kan søge efter eventuelle komplekse data ved hjælp af SELECT og WHERE-klausulen. Så hvorfor bruge jokertegn?

Lad os se på et eksempel, før vi besvarer det spørgsmål. Antag, at marketingafdelingen i Myflix-videobiblioteket gennemførte markedsføringskampagner i byen Texas og gerne vil have feedback om antallet af medlemmer

der er registreret fra Texas, kan du bruge følgende SELECT-sætning sammen med WHERE-klausulen for at få de ønskede oplysninger.

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 ovenstående forespørgsel, bliver "WHERE-klausulen" kompleks. Brug af jokertegn forenkler dog forespørgslen, da vi kan bruge noget simpelt som scriptet vist nedenfor.

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

Kort sagt giver jokertegn os mulighed for at udvikle motorsøgemaskiner til vores datadrevne applikationer.

Typer af jokertegn

% procentdelen

% procenttegnet bruges til at angive et mønster på nul (0) eller flere tegn . Den har følgende grundlæggende syntaks.

SELECT statements… WHERE fieldname LIKE 'xxx%';

HER

  • "SELECT-sætning ..." er standardkommandoen SQL SELECT.
  • "WHERE" er nøgleordet, der bruges til at anvende filteret.
  • "LIKE" er den sammenligningsoperator, der bruges i forbindelse med jokertegn
  • 'xxx' er et hvilket som helst specificeret startmønster såsom et enkelt tegn eller mere, og "%" matcher et hvilket som helst antal tegn, der starter fra nul (0).

Lad os se på et praktisk eksempel for fuldt ud at værdsætte ovenstående udsagn

Antag, at vi ønsker at få alle de film, der har ordet "kode" som en del af titlen, og vi bruger det procentvise jokertegn til at udføre et mønstermatch på begge sider af ordet "kode". Nedenfor er SQL-sætningen, der kan bruges til at opnå de ønskede resultater.

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

At udføre ovenstående script i MySQL workbench mod myflixdb giver os resultaterne vist nedenfor.

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

Bemærk, at selvom søgeordet "kode" vises i begyndelsen eller slutningen af ​​titlen, returneres det stadig i vores resultatsæt. Dette skyldes, at vores kode indeholder et hvilket som helst antal tegn i starten og derefter matcher mønsteret "kode" efterfulgt af et hvilket som helst antal tegn i slutningen.

Lad os nu ændre vores ovenstående script for kun at inkludere det procentvise wildcard i begyndelsen af ​​søgekriterierne.

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

At udføre ovenstående script i MySQL workbench mod myflixdb giver os resultaterne vist nedenfor.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Bemærk, at kun én post er returneret fra databasen. Dette skyldes, at vores kode matcher et hvilket som helst antal tegn i begyndelsen af ​​filmtitlen og kun får poster, der slutter med mønsteret "kode".

Lad os nu flytte det procentvise wildcard til slutningen af ​​det angivne mønster, der skal matches. Det modificerede script vises nedenfor.

SELECT * FROM movies WHERE title LIKE 'code%';
At udføre ovenstående script i MySQL workbench mod myflixdb giver os resultaterne vist nedenfor.
 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

Bemærk, at der kun er returneret én post fra databasen. Dette skyldes, at vores kode matcher alle titler, der starter med mønsteret "kode" efterfulgt af et hvilket som helst antal tegn.

_ understreg wildcard

Understreget wildcard bruges til at matche nøjagtigt et tegn . Lad os antage, at vi ønsker at søge efter alle de film, der blev udgivet i 200x-årene, hvor x er nøjagtigt et tegn, der kunne være en hvilken som helst værdi. Vi ville bruge understregningskortet til at opnå det. Manuskriptet nedenfor vælger alle de film, der blev udgivet i året "200x"

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

At udføre ovenstående script i MySQL workbench mod myflixdb giver os resultaterne 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

Bemærk, at kun film, der har 200 følger med en hvilken som helst karakter i det udgivne feltår, er returneret i vores resultatsæt. Dette skyldes, at understreget wildcard matchede mønsteret 200 efterfulgt af et enkelt tegn

Ikke som

Den IKKE logiske operator kan bruges sammen med jokertegnene til at returnere rækker, der ikke matcher det angivne mønster.

Antag, at vi ønsker at få film, der ikke blev udgivet i året 200x. Vi ville bruge den IKKE logiske operatør sammen med understregningskortet for at få vores resultater. Nedenfor er scriptet, der gø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

Bemærk, at kun film, der ikke starter med 200 i det udgivne år, er returneret i vores resultatsæt. Dette skyldes, at vi brugte den IKKE logiske operator i vores søgning med jokertegn.

Escape-nøgleord.

ESCAPE-nøgleordet bruges til at undslippe mønstermatchende tegn såsom (%) procent og understregning (_), hvis de er en del af dataene.

Lad os antage, at vi vil kontrollere strengen "67%", vi kan bruge;

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

Hvis vi vil søge efter filmen "67% skyldig", kan vi bruge scriptet vist nedenfor til at gøre det.

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

Bemærk det dobbelte " %% " i LIKE-udtrykket, den første i rødt " % " behandles som en del af den streng, der skal søges efter. Den anden bruges til at matche et hvilket som helst antal tegn, der følger.

Den samme forespørgsel fungerer også, hvis vi bruger noget lignende

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

Resumé

  • Like & Wildcards kraftfulde værktøjer, der hjælper med at søge i data, der matcher komplekse mønstre.
  • Der er et antal wildcards, der inkluderer procentdelen, understregningen og charlisten (understøttes ikke af MySQL) blandt andre
  • Procentdelen af ​​jokertegn bruges til at matche et hvilket som helst antal tegn, der starter fra nul (0) og mere.
  • Understreget wildcard bruges til at matche nøjagtigt et tegn.