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.