MySQL Wildcards Tutorial: Gilla, INTE gilla, Escape, (%), (_)

Innehållsförteckning:

Anonim

Vad är MySQL jokertecken?

MySQL jokertecken är tecken som hjälper till att söka i data som matchar komplexa kriterier. Jokertecken används tillsammans med jämförelseoperatören LIKE eller med jämförelseoperatören NOT LIKE.

Varför använda WildCards?

Om du är bekant med att använda SQL kan du tro att du kan söka efter komplexa data med SELECT- och WHERE-satsen. Varför använda Wildcards?

Innan vi svarar på den frågan, låt oss titta på ett exempel. Antag att marknadsföringsavdelningen för Myflix-videobiblioteket genomförde marknadsföringskampanjer i staden Texas och skulle vilja få lite feedback om antalet medlemmar

som registrerats från Texas kan du använda följande SELECT-uttalande tillsammans med WHERE-klausulen för att få önskad information.

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 från ovanstående fråga blir "WHERE-klausulen" komplex. Att använda jokertecken förenklar dock frågan eftersom vi kan använda något enkelt som manuset som visas nedan.

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

Kort sagt, jokertecken gör det möjligt för oss att utveckla kraftsökmotorer till våra datadrivna applikationer.

Typer av jokertecken

% procenten

% procenttecknet används för att ange ett mönster på noll (0) eller fler tecken . Den har följande grundläggande syntax.

SELECT statements… WHERE fieldname LIKE 'xxx%';

HÄR

  • "SELECT-sats ..." är standardkommandot SQL SELECT.
  • "WHERE" är nyckelordet som används för att tillämpa filtret.
  • "LIKE" är jämförelseoperatören som används i kombination med jokertecken
  • 'xxx' är ett angivet startmönster, till exempel ett enstaka tecken eller mer, och "%" matchar valfritt antal tecken som börjar från noll (0).

För att till fullo uppskatta ovanstående uttalande, låt oss titta på ett praktiskt exempel

Antag att vi vill få alla filmer som har ordet "kod" som en del av titeln, vi skulle använda det procentuella jokertecknet för att utföra en mönstermatchning på båda sidor om ordet "kod". Nedan följer SQL-uttalandet som kan användas för att uppnå önskat resultat.

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

Att köra ovanstående skript i MySQL-arbetsbänken mot myflixdb ger oss resultaten som visas nedan.

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

Observera att även om sökordet "kod" visas i början eller slutet av titeln returneras det fortfarande i vår resultatsats. Detta beror på att vår kod innehåller ett antal tecken i början och sedan matchar mönstret "kod" följt av valfritt antal tecken i slutet.

Låt oss nu ändra vårt ovanstående skript så att det endast inkluderar procentandelen jokertecken i början av sökkriterierna.

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

Att köra ovanstående skript i MySQL-arbetsbänken mot myflixdb ger oss resultaten som visas nedan.

 
movie_id title director year_released category_id
7 Davinci Code NULL NULL 6

Observera att endast en post har returnerats från databasen. Detta beror på att vår kod matchar valfritt antal tecken i början av filmtiteln och bara får poster som slutar med mönstret "kod".

Låt oss nu flytta den procentuella jokertecken till slutet av det angivna mönstret som ska matchas. Det modifierade skriptet visas nedan.

SELECT * FROM movies WHERE title LIKE 'code%';
Att köra ovanstående skript i MySQL-arbetsbänken mot myflixdb ger oss resultaten som visas nedan.
 
movie_id title director year_released category_id
4 Code Name Black Edgar Jimz 2010 NULL

Observera att endast en post har returnerats från databasen. Detta beror på att vår kod matchar alla titlar som börjar med mönstret "kod" följt av valfritt antal tecken.

_ understryka jokertecken

Jokertecken med understrykning används för att matcha exakt ett tecken . Låt oss anta att vi vill söka efter alla filmer som släpptes under 200x-åren där x är exakt en karaktär som kan vara vilket värde som helst. Vi skulle använda understrykjokortet för att uppnå det. Manuset nedan väljer alla filmer som släpptes under året "200x"

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

Att köra ovanstående skript i MySQL-arbetsbänken mot myflixdb ger oss resultaten som visas nedan.

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

Observera att endast filmer som har 200 följer av vilken karaktär som helst under det utgivna fältåret har returnerats i vår resultatsats. Detta beror på att jokertecknet understreck matchade mönstret 200 följt av en enda karaktär

Inte som

Den INTE logiska operatören kan användas tillsammans med jokertecken för att returnera rader som inte matchar det angivna mönstret.

Antag att vi vill få filmer som inte släpptes 200x år. Vi skulle använda den INTE logiska operatören tillsammans med jokertecknet för understrykning för att få våra resultat. Nedan är manuset som 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

Observera att endast filmer som inte börjar med 200 under det släppta året har returnerats i vår resultatsats. Detta beror på att vi använde den INTE logiska operatören i vår sökning med jokertecken.

Escape-nyckelord.

ESCAPE-nyckelordet används för att undkomma mönstermatchningstecken som (%) procent och understrykning (_) om de utgör en del av data.

Låt oss anta att vi vill söka efter strängen "67%" vi kan använda;

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

Om vi ​​vill söka efter filmen "67% Guilty" kan vi använda manuset som visas nedan för att göra det.

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

Observera det dubbla " %% " i LIKE-satsen, den första i rött " % " behandlas som en del av strängen som ska sökas. Den andra används för att matcha valfritt antal tecken som följer.

Samma fråga fungerar också om vi använder något liknande

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

Sammanfattning

  • Like & Wildcards kraftfulla verktyg som hjälper till att söka i data som matchar komplexa mönster.
  • Det finns ett antal jokertecken som inkluderar procent, understrykning och charlista (stöds inte av MySQL) bland andra
  • Procent jokertecken används för att matcha valfritt antal tecken som börjar från noll (0) och mer.
  • Jokertecken med understrykning används för att matcha exakt ett tecken.