Co jsou zástupné znaky MySQL?
Zástupné znaky MySQL jsou znaky, které pomáhají vyhledávat data odpovídající složitým kritériím. Zástupné znaky se používají ve spojení s operátorem LIKE porovnání nebo s operátorem NOT LIKE comparison.
Proč používat WildCards?
Pokud jste obeznámeni s používáním SQL, můžete si myslet, že můžete vyhledat libovolná složitá data pomocí klauzule SELECT a WHERE. Proč tedy používat zástupné znaky?
Než na tuto otázku odpovíme, podívejme se na příklad. Předpokládejme, že marketingové oddělení videotéky Myflix provádělo marketingové akce ve městě Texas a chtělo by získat zpětnou vazbu o počtu členů
který je registrován z Texasu, můžete použít následující příkaz SELECT společně s klauzulí WHERE a získat požadované informace.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Jak vidíte z výše uvedeného dotazu, klauzule „WHERE“ se stává složitou. Použití zástupných znaků však zjednodušuje dotaz, protože můžeme použít něco jednoduchého, jako je skript zobrazený níže.
SELECT * FROM members WHERE postal_address like '% TX';
Stručně řečeno, zástupné znaky nám umožňují vyvinout výkonné vyhledávače do našich datových aplikací.
Druhy zástupných znaků
% procento
% procentuální znak se používá k určení vzoru s nulovým (0) nebo více znaky . Má následující základní syntaxi.
SELECT statements… WHERE fieldname LIKE 'xxx%';
TADY
- „Příkaz SELECT…“ je standardní příkaz SQL SELECT.
- „WHERE“ je klíčové slovo použité k použití filtru.
- „LIKE“ je operátor porovnání, který se používá ve spojení se zástupnými znaky
- „xxx“ je libovolný zadaný počáteční vzor, například jeden znak nebo více, a „%“ odpovídá libovolnému počtu znaků počínaje od nuly (0).
Abychom plně ocenili výše uvedené tvrzení, podívejme se na praktický příklad
Předpokládejme, že chceme získat všechny filmy, které mají slovo „kód“ jako součást názvu, použijeme zástupný znak procenta k provedení shody vzorů na obou stranách slova „kód“. Níže je uveden příkaz SQL, kterým lze dosáhnout požadovaných výsledků.
SELECT * FROM movies WHERE title LIKE '%code%';
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává výsledky uvedené níže.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Všimněte si, že i když se vyhledávací klíčové slovo „kód“ objeví na začátku nebo na konci názvu, v naší výsledkové sadě se stále vrátí. Důvodem je, že náš kód obsahuje na začátku libovolný počet znaků, poté odpovídá vzoru „kód“, za kterým následuje libovolný počet znaků na konci.
Pojďme nyní upravit náš výše uvedený skript tak, aby zahrnoval procentní zástupný znak pouze na začátku vyhledávacích kritérií.
SELECT * FROM movies WHERE title LIKE '%code';
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává výsledky uvedené níže.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
Všimněte si, že z databáze byl vrácen pouze jeden záznam. Důvodem je, že náš kód odpovídá libovolnému počtu znaků na začátku názvu filmu a získá pouze záznamy, které končí vzorem „kód“.
Pojďme nyní přesunout zástupný znak procenta na konec zadaného vzoru, který má být porovnán. Upravený skript je uveden níže.
SELECT * FROM movies WHERE title LIKE 'code%';Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává výsledky uvedené níže.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
Všimněte si, že z databáze byl vrácen pouze jeden záznam. Je to proto, že náš kód odpovídá všem titulům, které začínají vzorem „kód“, za nímž následuje libovolný počet znaků.
_ zástupný znak podtržítka
Zástupný znak podtržítka se používá k porovnání přesně jednoho znaku . Předpokládejme, že chceme hledat všechny filmy, které vyšly v letech 200x, kde x je přesně jeden znak, který by mohl mít jakoukoli hodnotu. K tomu bychom použili divokou kartu podtržítka. Níže uvedený skript vybere všechny filmy, které byly vydány v roce „200x“
SELECT * FROM movies WHERE year_released LIKE '200_';
Provedení výše uvedeného skriptu v pracovní ploše MySQL proti myflixdb nám dává výsledky uvedené níže.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Všimněte si, že v naší výsledkové sadě byly vráceny pouze filmy, které mají 200 následovaných jakoukoli postavou ve vydaném roce pole. Důvodem je, že zástupný znak podtržítka odpovídal vzoru 200 následovanému libovolným jediným znakem
Ne jako
Logický operátor NOT lze použít společně se zástupnými znaky k vrácení řádků, které neodpovídají zadanému vzoru.
Předpokládejme, že chceme získat filmy, které nebyly vydány v roce 200x. K získání našich výsledků bychom použili logický operátor NOT společně se zástupným znakem podtržítka. Níže je uveden skript, který to dělá.
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šimněte si, že v naší výsledkové sadě byly vráceny pouze filmy, které nezačínají 200 v uvedeném roce. Je to proto, že jsme při hledání zástupných znaků použili operátor NOT logický.
Uniknout klíčové slovo.
Klíčové slovo ESCAPE se používá k úniku znaků odpovídajících vzoru , jako je (%) procento a podtržítko (_), pokud tvoří součást dat.
Předpokládejme, že chceme zkontrolovat řetězec „67%“, který můžeme použít;
LIKE '67#%%' ESCAPE '#';
Pokud chceme vyhledat film „67% Guilty“, můžeme k tomu použít níže uvedený skript.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Všimněte si dvojitého " %% " v klauzuli LIKE, první červený " % " je považován za součást řetězce, který má být vyhledán. Druhá se používá k porovnání libovolného počtu následujících znaků.
Stejný dotaz bude také fungovat, pokud použijeme něco jako
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
souhrn
- Like & Wildcards výkonné nástroje, které pomáhají vyhledávat data odpovídající složitým vzorům.
- Existuje řada zástupných znaků, které zahrnují mimo jiné procento, podtržítko a charlist (nepodporuje MySQL)
- Zástupný znak v procentech se používá k porovnání libovolného počtu znaků od nuly (0) a více.
- Zástupný znak podtržítka se používá k porovnání přesně jednoho znaku.