mysql like tutorial with syntax
Tento kurz vysvětluje porovnávání vzorů pomocí operátoru MySQL LIKE:
Porovnávání vzorů je důležitou funkcí téměř ve všech programovacích jazycích, jako je Java / C # / Python atd., Které většinou využívají použití regulárních výrazů pro porovnávání vzorů s daným vstupem řetězce.
MySQL poskytuje snadno použitelný operátor s názvem LIKE, který lze použít k porovnání hodnot String se specifikovanými vzory a jsou užitečné pro dotazování velkých sad dat.
Co se naučíte:
MySQL LIKE
Syntax:
Operátor LIKE se používá spolu s klauzulí WHERE v dotazu SELECT.
V jednoduchém dotazu vypadá syntaxe níže.
SELECT {column_names} (*) FROM {table_name} WHERE {column_with_string_value} LIKE {match_pattern}
Různé komponenty této syntaxe jsou vysvětleny takto:
- {column_names}: Toto jsou názvy sloupců, které se mají zobrazit jako výstup dotazu SELECT. Tyto hodnoty mohou být * pro výběr všech sloupců nebo názvy jednotlivých sloupců oddělené čárkami.
- {název_tabulky}: Toto je název tabulky, kde je třeba provést dotaz.
- {column_with_string_value}: Toto je sloupec, jehož hodnoty je třeba provést proti uvedenému vzoru. Vezměte prosím na vědomí, že jakékoli srovnání se provádí na sloupci, který lze převést na řetězec.
- {match_pattern}: Toto je výraz shody, proti kterému je třeba porovnávat hodnoty sloupců. Ukázka vzorů shody může být - „ SM% “. To by odpovídalo všem hodnotám sloupců počínaje SM. Příklad: SMART, SMELL, SMOKE atd.
Podobně jako v tomto dotazu lze operátor LIKE použít i při složitých dotazech s JOINS atd., Protože LIKE je pouze operátor porovnání a lze jej použít všude tam, kde je možné porovnání hodnot sloupců.
Poznámka: Podobně jako LIKE můžeme také použít jeho negovanou variantu, která je ‚NOT LIKE‘. V tomto případě tedy místo vrácení odpovídajících výsledků vrátí dotazy s operátorem „NENÍ LIKE“ výsledky, které se neshodují.
MySQL Match Patterns
LIKE Operator lze použít spolu se 2 typy vzorů. Jsou uvedeny v následující tabulce:
Vzor | |
---|---|
% (Procento) | Porovnejte libovolný počet znaků (včetně vůbec žádného) |
_ (Podtržítko) | Odpovídá jednomu znaku |
Nyní uvidíme několik příkladů využívajících oba vzory.
% Shody vzoru
Vzor% se používá, pokud chcete po nebo před umístěním porovnat 0 nebo více znaků.
Například: pokud chcete porovnat řetězec „it“ ze sloupce se jmény zaměstnanců. Předpokládejme, že existují jména jako - Amit, Anchit, Arpit, Nikita, Smith atd. Vidíme, že všechna jména mají podřetězec „it“. Ale jejich umístění je jiné.
Předpokládejme, že název sloupce je jména a název tabulky je student_names.
K naplnění databáze použijte následující ukázkové skripty pro vytváření dat:
CREATE TABLE student_names (name VARCHAR(100)); INSERT INTO student_names VALUES('Amit'),('Ankit'),('Smith'),('Nikita'),('Mohit');
Podívejme se, jak můžeme použít vzor% shody.
SELECT * FROM student_names WHERE name LIKE '%it%'
Výstup:
název |
---|
Amit |
Ankit |
Kovář |
Nikita |
Mohit |
To teď znamená, že se může shodovat s řetězcem, který má podřetězec „it“ na jakémkoli místě a před i po zápase může existovat libovolný počet znaků. Vidíte, že všechny odpovídající názvy jsou vráceny jako výstup.
Přepište dotaz tak, aby odpovídal pouze těm jménům, která končí podřetězcem „it“.
SELECT * FROM student_names WHERE name LIKE '%it'
Tady jsme tedy odstranili koncové znaménko „%“ a řetězec „it“ jsme umístili na konec. Tento vzor by před „it“ umožňoval libovolný počet znaků, ale řetězec by měl končit podřetězcem „it“.
Výstup výše uvedeného dotazu:
název |
---|
Amit |
Ankit |
Mohit |
Poznámka: Zde je důležité si uvědomit, že u vzoru uvedeného pomocí znaku „%“ se nerozlišují velká a malá písmena. Takže u výše uvedeného příkladu bychom místo „% it“ mohli použít „% IT“ nebo „% It“, výstup by zůstal stejný.
_Shoda vzoru
Pojďme se nyní podívat na to, jak můžeme použít vzor shody „_“. Víme, že znak „_“ umožňuje přesně jeden znak.
Předpokládejme, že chceme dotazovat na všechna 5písmenná jména ze stejné tabulky (student_names).
Chcete-li v tomto případě použít porovnávač vzorů „_“, zadali jsme pět _ (podtržítka) spolu s LIKE Pattern, které budou odpovídat pouze těm názvům, které mají délku 5 znaků.
SELECT * FROM student_names WHERE name LIKE '_____'
Výstup:
název |
---|
Ankit |
Mohit |
Kovář |
Podívejme se na další příklad. Předpokládejme, že chceme najít všech 5 písmen, která končí podřetězcem „it“
SELECT * FROM student_names WHERE name LIKE '___it'
Zde jsme použili 3 „_“ (podtržítka) a skutečný podřetězec, který je třeba porovnat.
Výstup:
název |
---|
Ankit |
Mohit |
Kovář |
Kombinace porovnávače vzorů% a _
V této části budeme diskutovat o tom, jak můžeme porovnat porovnávače vzorů% a _.
kde najdu bezpečnostní klíč
Předpokládejme, že chceme najít všechna jména, která mají podřetězec „it“ a mohou mít přesně 2 znaky za slovem „it“
SELECT * FROM student_names WHERE name LIKE '%it_'
Zde jsme zkombinovali vzory shody% i _, abychom našli přesnou shodu.
Výstup:
název |
---|
Kovář |
Nikita |
Používání NOT LIKE
NOT LIKE je přesná negace toho, co operátor LIKE vrací. tj. vrátí všechny záznamy / řádky, které neodpovídají výrazu shody se vzorem.
Příklad: Předpokládejme, že chceme najít všechna jména, která nejsou dlouhá 4 znaky.
SELECT * FROM student_names WHERE name NOT LIKE '____'
Výstup:
název |
---|
Ankit |
Kovář |
Nikita |
Mohit |
Ve výše uvedeném výstupu vidíte, že vrací pouze ta jména, která nejsou dlouhá 4 znaky.
Používání MySQL LIKE se znakem ESCAPE
Zde uvidíme, jak můžeme používat znaky ESCAPE spolu s porovnávačem vzorů.
Předpokládejme, že v hypotetické situaci máme jména, která ve skutečnosti obsahují znaky% a _ a chceme tato jména najít, pak musíme skutečně odpovídat% & _. Toho lze dosáhnout pomocí únikové postavy.
Poznámka: Výchozí hodnota únikového znaku je „“ (zpětné lomítko)
Přidejte některá data do tabulek student_names, která obsahují názvy se znaky% a _.
INSERT INTO student_names VALUES('Darre%n'),('Julia_Roberts'),('Dane_Sherman%');
Níže uvádíme několik příkladů, jak tomu lépe porozumět.
# 1) Najděte všechna jména, která mají znak%.
SELECT * FROM student_names WHERE name LIKE '%\%%'
Výstup:
název |
---|
Darre% n |
Dane_Sherman% |
#dva) Najděte všechna jména, která mají znak _
SELECT * FROM student_names WHERE name LIKE '%\_%'
Výstup:
název |
---|
Julia_Roberts |
Dane_Sherman% |
V obou výše uvedených příkladech můžete vidět, že jsme použili znak escape, abychom zmínili znaky% a _ - tj. Pro porovnání samotného znaku% jsme použili znak escape před znakem% - tj. Jako „\%“
Pomocí únikové postavy podle vlastního výběru
Nyní zkusme rozšířit předchozí příklad.
MySQL vám umožňuje určit svůj vlastní znak ESCAPE, který by MySQL měl použít při spuštění vyhledávání shody vzorů.
Zkusme aktualizovat znak Escape na „!“ Místo výchozí hodnoty „“
SELECT * FROM student_names WHERE name LIKE '%!_%' ESCAPE '!'
Výstup:
název |
---|
Julia_Roberts |
Dane_Sherman% |
Ve výše uvedeném příkladu jsme přepsali znak escape na znak „!“ A použili jsme to samé v nástroji pro porovnávání vzorů „%! _%“ - kde chceme ve jménu najít znak „_“.
Často kladené otázky
Otázka č. 1) Co znamená %% v SQL?
Odpovědět: „%%“ se nebude shodovat s ničím konkrétním. Je to ekvivalent pouze 1% znaku. Chcete-li v hodnotě sloupce porovnat samotný znak „%“, můžete jej použít s znakem escape, který má výchozí hodnotu “.
Předpokládejme, že chcete porovnat hodnotu sloupce se znakem „%“, můžete napsat shodu vzoru jako - LIKE „% %%“ (všimněte si zvláštního zpětného lomítka před znakem středního procenta (%).
Otázka 2) Co je zástupný znak v MySQL?
Odpovědět: MySQL LIKE Operator pracuje se 2 zástupnými znaky v MySQL, aby dosáhl různých způsobů shody vzorů.
Tyto jsou:
5 příkladů programovacích jazyků na vysoké úrovni
- % - To by odpovídalo libovolnému počtu znaků (včetně nuly)
- _ - To by odpovídalo přesně jedné postavě
Otázka č. 3) Jak v MySQL napíšu LIKE dotaz?
Odpovědět: LIKE je jednoduchý operátor, který se obecně používá spolu s klauzulí WHERE v dotazu SELECT. Používá se k porovnání hodnot sloupců se zadaným vzorem.
Příklad: Předpokládejme, že existuje tabulka s podrobnostmi zaměstnance a má sloupec s názvem adresa, který obsahuje číslo domu, název ulice atd. Chcete zjistit všechny zaměstnance, kteří mají jako svoji adresu definovanou ulici „Oxford Lane“.
K napsání takového dotazu můžeme použít operátor LIKE.
SELECT * FROM employee_details WHERE address LIKE '%Oxford Lane%'
Vezměte prosím na vědomí, že řetězce jsou malá a velká písmena při porovnávání se zadaným výrazem shody.
Otázka č. 4) Jak určit jiný znak Escape společně s operátorem LIKE?
Odpovědět: MySQL poskytuje způsob, jak určit vlastní znak Escape, který by přepsal výchozí, tj.
Zde je příklad, který by pro provedení dotazu změnil řídicí znak na „!“.
SELECT * FROM employee_details WHERE address LIKE '%!_%' ESCAPE '!'
Ve výše uvedeném dotazu jsme jako únikový znak uvedli znak „!“ A ve výrazu shody jsme jej použili stejně.
Otázka č. 5) Jak pomocí operátoru LIKE porovnat skutečný znak% nebo _?
Odpovědět: Znaky jako% a _ jsou speciální zástupné znaky, které by ve skutečnosti měly být porovnány jako součást řetězce.
Výchozí řídicí znak je „“ a měl by být použit těsně před uvedením zástupného znaku.
Předpokládejme, že chceme porovnat znak „_“ s danou hodnotou sloupce, pak můžeme zapsat výraz shody jako - JAKO '%\_%'
Závěr
V tomto kurzu jsme se dozvěděli o různých způsobech, kterými můžeme používat operátor LIKE (nebo negovanou verzi, tj. NOT LIKE).
Také jsme diskutovali o podporovaných zástupných znacích, tj. _ A% a jak jim lze uniknout, pokud musí být součástí řetězce, který má být prohledán / porovnán.
Operátor LIKE je výkonná funkce poskytovaná MySQL a obvykle se používá k filtrování záznamů při dotazování na velké sady dat.
Doporučené čtení
- MySQL Create View Tutorial s příklady kódu
- MySQL UNION - komplexní výukový program s příklady Unie
- MySQL Vytvoření výukové tabulky s příklady
- MySQL Vložit do tabulky - Vložit syntaxi výpisu a příklady
- Syntaxe příkazů Unix Cat, možnosti s příklady
- C # Regex Tutorial: Co je C # regulární výraz
- C ++ regex Tutorial: Regulární výrazy v C ++ s příklady
- Výukový program Java Regex s příklady regulárních výrazů