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

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 sammenligningsoperatoren eller med NOT LIKE sammenligningsoperatoren.

Hvorfor bruge WildCards?

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

Før vi besvarer det spørgsmål, lad os se på et eksempel. Antag, at marketingafdelingen i Myflix videobibliotek gennemførte marketingkampagner i byen Texas og gerne vil have feedback på antallet af medlemmer

der er registreret fra Texas, kan du bruge følgende SELECT-sætning sammen med WHERE-sætningen 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, "WHERE-klausul” bliver kompleks. Brug af jokertegn forenkler imidlertid 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 kraftfulde søgemaskiner til vores datadrevne applikationer.

Typer af jokertegn

% procenten

% 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 erklæring…” er standard SQL SELECT-kommando.
  • "WHERE" er nøgleordet, der bruges til at anvende filteret.
  • "LIKE" er sammenligningsoperatoren, der bruges sammen 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).

For fuldt ud at værdsætte ovenstående udsagn, lad os se på et praktisk eksempel

Antag, at vi ønsker at få alle de film, der har ordet "kode", som en del af titlen, vil vi bruge jokertegnet i procent 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%';

Udførelse af ovenstående script i MySQL arbejdsbord 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 inkluderer et vilkårligt antal tegn i begyndelsen og derefter matcher mønsteret "koden" efterfulgt af et vilkårligt antal tegn i slutningen.

Lad os nu ændre vores ovenstående script til kun at inkludere procent-jokertegnet i begyndelsen af ​​søgekriterierne.

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

Udførelse af 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 der kun er returneret én post fra databasen. Dette skyldes, at vores kode matcher et hvilket som helst antal tegn i begyndelsen af ​​filmtitlen og kun får poster, der ender med mønsteret "koden".

Lad os nu flytte jokertegnet i procent til slutningen af ​​det angivne mønster, der skal matches. Det ændrede script er vist nedenfor.

SELECT * FROM movies WHERE title LIKE 'code%';
Udførelse af 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 "koden" efterfulgt af et vilkårligt antal tegn.

_ understregning jokertegn

Understregningen jokertegnet bruges til matcher nøjagtigt ét tegn. Lad os antage, at vi vil søge efter alle de film, der blev udgivet i årene 200x, hvor x er præcis et tegn, der kunne have en hvilken som helst værdi. Vi ville bruge understregningens jokertegn for at opnå det. Scriptet nedenfor vælger alle de film, der blev udgivet i året "200x"

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

Udførelse af 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 af en karakter i feltåret udgivet, er blevet returneret i vores resultatsæt. Dette skyldes, at understregningens jokertegn matchede mønsteret 200 efterfulgt af et hvilket som helst enkelt tegn

Ikke som

Den logiske NOT-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 år 200x. Vi ville bruge den NOT logiske operator sammen med understregnings-jokertegnet 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 kun film, der ikke starter med 200 i udgivelsesåret, er blevet returneret i vores resultatsæt. Dette skyldes, at vi brugte den NOT logiske operator i vores jokertegnmønstersøgning.

Escape søgeord

Nøgleordet ESCAPE er vant til escape mønster matchende tegn såsom (%) procent og understregning (_), hvis de udgør en del af dataene.

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

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

Hvis vi vil søge efter filmen "67% Guilty", 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-klausulen, 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 vilkårligt antal tegn, der følger.

Den samme forespørgsel vil også fungere, 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 data, der matcher komplekse mønstre.
  • Der er et antal jokertegn, der inkluderer procent, understregning og charlist (understøttes ikke af MySQL ) blandt andre
  • Jokertegnet i procent bruges til at matche et hvilket som helst antal tegn, der starter fra nul (0) og mere.
  • Understregnings-jokertegnet bruges til at matche nøjagtigt ét tegn.