Problém:
Chtěli byste najít podřetězec odpovídající vzoru v řetězci.
Příklad:
Naše databáze obsahuje tabulku s názvem zákazník s údaji v následujících sloupcích:id
, first_name
, last_name
a city
.
id | first_name | last_name | město |
---|---|---|---|
1 | Alan | Watson | Madrid |
2 | Lisa | Černá | Singapur |
3 | Laura | Williams | Seattle |
4 | Milán | Cihla | Soul |
Podívejme se na několik příkladů shody vzorů v SQL.
Příklad 1:
Zobrazme křestní jméno, příjmení a město každého zákazníka, jehož název města začíná písmenem „S“.
Řešení:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
last_name | first_name | město |
---|---|---|
Lisa | Černá | S ingapore |
Milán | Cihla | S eoul |
Laura | Williams | S jíst |
Použili jsme zástupný znak %, který představuje nula nebo více neznámých znaků. Tento zástupný znak lze použít kdekoli v řetězci.
Příklad 2:
Ukažme křestní jméno, příjmení a město každého zákazníka, jehož název města obsahuje přesně pět znaků.
Řešení:
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Zde je výsledek:
last_name | first_name | město |
---|---|---|
Milan | Cihla | Soul |
Zástupný znak podtržítka lze použít k reprezentaci jednoho neznámého znaku. Použitím pěti z nich za sebou tedy můžeme reprezentovat všechny řetězce dlouhé pět znaků. V našem příkladu je jediné město odpovídající tomuto popisu Soul.
Příklad 3:
Ukažme křestní jméno, příjmení a město každého zákazníka, jehož město začíná písmenem „S“ a má písmeno „o“ jako třetí znak.
Řešení:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Zde je výsledek:
last_name | first_name | město |
---|---|---|
Lisa | Černá | S ingapo re |
Milán | Cihla | S eo ul |
Dotaz vrátil pouze dva záznamy:Lisa Black z S ingapo re a Milan Brick z S eo ul. Tato města odpovídají danému vzoru. Zde jsme oba zástupné znaky zkombinovali, abychom vytvořili specifičtější vzor:všechny řetězce začínající velkým písmenem 'S' a obsahující libovolný počet dalších znaků za tím, pokud je předposledním znakem malé písmeno 'o. '
Diskuse:
Pokud chcete vybrat záznamy, ve kterých řetězec odpovídá určitému vzoru, můžete použít LIKE
klauzule jako podmínka v WHERE
doložka. Po WHERE
, uveďte název sloupce (např. city
) následované LIKE
klauzule určující vzor řetězce (např. 'S%o__'
), které chcete vyhledat.
Jak jsme viděli v příkladech, můžete použít dva speciální znaky známé jako zástupné znaky reprezentovat neznámé znaky:
- Zástupný znak '%' označuje nula nebo více znaků.
- Zástupný znak '_' označuje libovolný jednotlivý znak.
Tyto zástupné znaky můžete kombinovat, abyste dosáhli skutečně silných výsledků. Můžete také zřetězit více než jeden LIKE
stav. Nakonec můžete použít NOT
operátor k nalezení řetězců, které ne odpovídat danému vzoru.