Čo sú zástupné znaky MySQL?
Zástupné znaky MySQL sú znaky, ktoré pomáhajú vyhľadávať údaje zodpovedajúce zložitým kritériám. Zástupné znaky sa používajú v spojení s operátorom LIKE porovnania alebo s operátorom NOT LIKE.
Prečo používať WildCards?
Ak ste oboznámení s používaním jazyka SQL, môžete si myslieť, že môžete vyhľadávať akékoľvek zložité údaje pomocou klauzúl SELECT a WHERE. Prečo potom používať zástupné znaky?
Predtým, ako odpovieme na túto otázku, pozrime sa na príklad. Predpokladajme, že marketingové oddelenie videotéky Myflix uskutočnilo marketingové akcie v meste Texas a chce získať spätnú väzbu o počte členov
ktorý je registrovaný z Texasu, môžete na získanie požadovaných informácií použiť nasledujúci príkaz SELECT spolu s klauzulou WHERE.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Ako vidíte z vyššie uvedeného dotazu, doložka „WHERE“ sa stáva zložitou. Použitie zástupných znakov však zjednodušuje dopyt, pretože môžeme použiť niečo také jednoduché, ako je skript zobrazený nižšie.
SELECT * FROM members WHERE postal_address like '% TX';
Stručne povedané, zástupné znaky nám umožňujú vyvinúť výkonné vyhľadávače do našich aplikácií založených na dátach.
Typy zástupných znakov
% percento
% sa percentuálny znak používa na zadanie vzoru s nulou (0) alebo viac znakov . Má nasledujúcu základnú syntax.
SELECT statements… WHERE fieldname LIKE 'xxx%';
TU
- „Príkaz SELECT ...“ je štandardný príkaz SQL SELECT.
- „WHERE“ je kľúčové slovo použité na použitie filtra.
- „LIKE“ je operátor porovnania, ktorý sa používa v spojení so zástupnými znakmi
- „xxx“ je ľubovoľný zadaný počiatočný vzor, napríklad jeden znak alebo viac, a „%“ zodpovedá ľubovoľnému počtu znakov začínajúcich od nuly (0).
Aby sme plne ocenili vyššie uvedené tvrdenie, pozrime sa na praktický príklad
Predpokladajme, že chceme dostať všetky filmy, ktoré majú v názve slovo „kód“, by sme použili percentuálny zástupný znak na vykonanie zhody vzorov na oboch stranách slova „kód“. Ďalej je uvedený príkaz SQL, ktorým je možné dosiahnuť požadované výsledky.
SELECT * FROM movies WHERE title LIKE '%code%';
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám poskytne výsledky uvedené nižšie.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Všimnite si, že aj keď sa hľadané kľúčové slovo „kód“ objaví na začiatku alebo na konci názvu, v našej množine výsledkov sa stále vráti. Je to tak preto, lebo náš kód obsahuje na začiatku ľubovoľný počet znakov, potom sa zhoduje so vzorom „kód“, za ktorým nasleduje ľubovoľný počet znakov na konci.
Upravme teraz náš skript vyššie tak, aby obsahoval zástupný znak percent na začiatku iba kritérií vyhľadávania.
SELECT * FROM movies WHERE title LIKE '%code';
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám poskytne výsledky uvedené nižšie.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Všimnite si, že z databázy bol vrátený iba jeden záznam. Je to tak preto, lebo náš kód zodpovedá ľubovoľnému počtu znakov na začiatku názvu filmu a získava iba záznamy, ktoré končia vzorom „kód“.
Poďme teraz presunúť percentuálny zástupný znak na koniec zadaného vzoru, ktorý sa má zhodovať. Upravený skript je uvedený nižšie.
SELECT * FROM movies WHERE title LIKE 'code%';Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám poskytne výsledky uvedené nižšie.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Všimnite si, že z databázy bol vrátený iba jeden záznam. Je to tak preto, lebo náš kód sa zhoduje so všetkými názvami, ktoré sa začínajú vzorom „kód“, za ktorým nasleduje ľubovoľný počet znakov.
_ zástupný znak podčiarknutia
Zástupný znak podčiarknutia sa používa na priradenie presne jedného znaku . Predpokladajme, že chceme vyhľadať všetky filmy, ktoré vyšli v rokoch 200x, kde x je presne jeden znak, ktorý by mohol mať akúkoľvek hodnotu. Použili by sme na to zástupnú divokú kartu. Skript uvedený nižšie vyberie všetky filmy, ktoré boli vydané v roku „200x“
SELECT * FROM movies WHERE year_released LIKE '200_';
Vykonanie vyššie uvedeného skriptu v pracovnom stole MySQL proti myflixdb nám poskytne výsledky uvedené nižšie.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Všimnite si, že v našej výsledkovej sade boli vrátené iba filmy, ktoré majú 200 znakov ľubovoľnej postavy v roku vydania poľa. Je to tak preto, lebo zástupný znak podčiarknutia sa zhodoval so vzorom 200, za ktorým nasledoval akýkoľvek jeden znak
Nie ako
NOT logický operátor možno použiť spolu so zástupnými znakmi na vrátenie riadkov, ktoré sa nezhodujú so zadaným vzorom.
Predpokladajme, že chceme získať filmy, ktoré neboli vydané v roku 200x. Na získanie našich výsledkov by sme použili NOT logický operátor spolu so zástupným znakom podčiarknutia. Nižšie je uvedený skript, ktorý to robí.
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 |
Všimnite si, že v našej výsledkovej sade boli vrátené iba filmy, ktoré sa v uvedenom roku nezačnú číslom 200. Je to tak preto, lebo sme pri hľadaní zástupných znakov použili operátor NOT logický.
Únikové slovo.
Kľúčové slovo ESCAPE sa používa na únik zo znakov zodpovedajúcich vzorom, ako napríklad (%) percento a podčiarknutie (_), ak tvoria súčasť údajov.
Predpokladajme, že chceme skontrolovať reťazec „67%“, ktorý môžeme použiť;
LIKE '67#%%' ESCAPE '#';
Ak chceme vyhľadať film „67% vinný“, môžeme na to použiť nižšie uvedený skript.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Všimnite si dvojité " %% " v klauzule LIKE, prvé červené " % " je považované za súčasť reťazca, ktorý sa má vyhľadať. Druhá sa používa na priradenie ľubovoľného počtu nasledujúcich znakov.
Rovnaký dotaz bude fungovať, aj keď použijeme niečo ako
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Zhrnutie
- Páči sa mi & zástupné znaky výkonné nástroje, ktoré pomáhajú vyhľadávať údaje zodpovedajúce zložitým vzorom.
- Existuje niekoľko zástupných znakov, ktoré okrem iného obsahujú percentuálny podiel, podčiarknutie a charlist (nepodporuje ich MySQL).
- Zástupný znak percenta sa používa na priradenie ľubovoľného počtu znakov od nuly (0) a viac.
- Zástupný znak podčiarknutia sa používa na priradenie presne jedného znaku.