MySQL Výukový program se zástupnými znaky: Líbí se, NELíbí se, Escape, ( % ), ( _ )
Jaké jsou MySQL zástupné znaky?
MySQL Zástupné znaky 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 porovnání LIKE nebo s operátorem porovnání NOT LIKE.
Proč používat WildCards?
Pokud jste obeznámeni s používáním SQL, možná si myslíte, že můžete vyhledávat jakákoli 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 provedlo marketingovou propagaci ve městě Texas a chtělo by získat zpětnou vazbu o počtu členů
registrovanou z Texasu, můžete použít následující příkaz SELECT spolu s klauzulí WHERE k získání požadovaných informací.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Jak můžete vidět z výše uvedeného dotazu, „klauzule WHERE“ se stává složitým. 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 aplikací založených na datech.
Typy zástupných znaků
% procento
% znak procent se používá k určení vzoru nula (0) nebo více znaků. Má následující základní syntaxi.
SELECT statements... WHERE fieldname LIKE 'xxx%';
ZDE
- "příkaz SELECT…” je standardní příkaz SQL SELECT.
- „KDE“ 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, jako je jeden nebo více znaků a "%" odpovídá libovolnému počtu znaků počínaje nulou (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í v názvu slovo „kód“, použili bychom zástupný znak v procentech k provedení shody vzoru na obou stranách slova „kód“. Níže je uveden příkaz SQL, který lze použít k dosažení požadovaných výsledků.
SELECT * FROM movies WHERE title LIKE '%code%';
Spuštění výše uvedeného skriptu v MySQL ponk 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 klíčové slovo pro vyhledávání „kód“ objeví na začátku nebo na konci názvu, je stále vráceno v naší sadě výsledků. Důvodem je to, že náš kód obsahuje na začátku libovolný počet znaků a poté odpovídá vzoru „kód“, po kterém následuje libovolný počet znaků na konci.
Upravme nyní náš výše uvedený skript tak, aby obsahoval zástupný znak v procentech pouze na začátku vyhledávacích kritérií.
SELECT * FROM movies WHERE title LIKE '%code';
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb nám poskytuje 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. Je to proto, že náš kód odpovídá libovolnému počtu znaků na začátku názvu filmu a získává pouze záznamy, které končí vzorem „kód“.
Posuňme nyní zástupný znak v procentech na konec zadaného vzoru, který má být porovnán. Upravený skript je zobrazen níže.
SELECT * FROM movies WHERE title LIKE 'code%';
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. Důvodem je, že náš kód se shoduje se všemi názvy, které začínají vzorem „kód“, za kterým následuje libovolný počet znaků.
_ podtržítko zástupný znak
Zástupný znak podtržítka se používá odpovídat přesně jednomu znaku. Předpokládejme, že chceme vyhledat všechny filmy, které byly vydány v letech 200x, kde x je přesně jeden znak, který může mít jakoukoli hodnotu. K tomu bychom použili divokou kartu podtržítka. Níže uvedený scénář vybírá všechny filmy, které byly vydány v roce „200x“
SELECT * FROM movies WHERE year_released LIKE '200_';
Spuštění výše uvedeného skriptu v MySQL workbench proti myflixdb nám poskytuje 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 do naší sady výsledků byly vráceny pouze filmy, které mají 200 následovníků kterékoli postavy v daném roce. Je to proto, že zástupný znak podtržení se shodoval se vzorem 200 následovaným libovolným jední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í výsledků bychom použili logický operátor NOT spolu se zástupným znakem podtržítka. Níže je 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 do naší sady výsledků byly vráceny pouze filmy, které nezačínají číslem 200 v daném roce. Je to proto, že jsme při hledání vzoru zástupných znaků použili logický operátor NOT.
Klíčové slovo Escape
Klíčové slovo ESCAPE se používá k únikové vzory odpovídající znaky například 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% vinen“, můžeme k tomu použít níže uvedený scénář.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Všimněte si dvojitého „%%“ v klauzuli LIKE, první červeně „%” se považuje za součást hledaného řetězce. Druhý se používá k přiřazení libovolného počtu znaků, které následují.
Stejný dotaz bude také fungovat, pokud použijeme něco podobného
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Shrnutí
- Výkonné nástroje Like & Wildcards, které pomáhají vyhledávat data odpovídající složitým vzorům.
- Existuje řada zástupných znaků, které zahrnují procento, podtržítko a charlist (nepodporuje MySQL ) mezi ostatními
- Procentuální zástupný znak se používá pro shodu libovolného počtu znaků počínaje nulou (0) a více.
- Zástupný znak podtržítka se používá pro shodu přesně jednoho znaku.