Vzory: LIKE
= porovnává celý text. Někdy ale znáte jen jeho část: název začíná na S, e-mail končí určitou doménou. Na to je LIKE (jako). Porovná text se vzorem:
SELECT nazev
FROM hry
WHERE nazev LIKE 'S%'
ORDER BY nazev;| nazev |
|---|
| Shadow Ninja |
| Star Pilots |
Ve vzoru znamená % jakýkoli text: jakékoli znaky, kolik jich chcete, nebo také žádný. 'S%' znamená „S a pak cokoli“, takže najde názvy, které začínají na S. '%s' najde texty, které končí na s, a '%Pro%' ty, které obsahují Pro kdekoli: na začátku, uprostřed nebo na konci.
_ (podtržítko) znamená právě jeden znak, ať je jakýkoli. Názvy, jejichž druhé písmeno je o:
SELECT nazev
FROM hry
WHERE nazev LIKE '_o%'
ORDER BY nazev;| nazev |
|---|
| Goal Rush |
| Lost Temple |
| Moon Farm |
| Robot Rebellion |
| … |
Na rozdíl od = nezáleží u LIKE v SQLite na velkých a malých písmenech: 's%' najde Shadow Ninja a Star Pilots také. Platí to ale jen pro písmena anglické abecedy: mesto LIKE 'plzeň' najde Plzeň, ale mesto LIKE 'PLZEŇ' už ne, protože SQLite neví, že Ň a ň jsou stejné písmeno. Jiné databáze se tu můžou lišit; třeba v PostgreSQL na velikosti písmen u LIKE záleží.
NOT LIKE najde texty, které vzoru neodpovídají. Recenze, jejichž komentář nekončí tečkou:
SELECT hvezdicky, komentar
FROM recenze
WHERE komentar NOT LIKE '%.'
ORDER BY hvezdicky DESC;| hvezdicky | komentar |
|---|---|
| 5 | Nejlepší RPG, jaké jsem za poslední roky hrál! |
| 4 | Strašidelné! |
Recenze bez komentáře ve výsledku nejsou, i když chybějící komentář tečkou určitě nekončí. Jejich komentář je NULL a u něj SQLite nedokáže říct, jestli vzoru odpovídá, nebo ne. Víc o tom v příštím cvičení.
Typická chyba: % s = místo LIKE. WHERE nazev = 'S%' nenajde nic: = bere % doslova a hledá název, který je jen S a znak procenta.
Jak psát:
Pokyny
Ukažte jméno a e-mail zákazníků, jejichž e-mail končí na @mail.cz, seřazené podle jména:
| jmeno | |
|---|---|
| Adéla Králová | adela.kralova@mail.cz |
| Anna Kučerová | anna.kucerova@mail.cz |
| Eva Novotná | eva.novotna@mail.cz |
| … | … |
Pod tím ukažte názvy her, které obsahují písmeno k kdekoli v názvu, malé i velké, seřazené podle názvu:
| nazev |
|---|
| Bakery Story |
| Ice Hockey Pro |
| Knight's Oath |
| Tiny Kingdoms |
| Turbo Karts |
A pod tím ukažte jméno a e-mail zákazníků, jejichž e-mail nekončí na @mail.cz, seřazené podle jména:
| jmeno | |
|---|---|
| Filip Beneš | filip@benes.dev |
| Tereza Svobodová | tereza@svobodovi.cz |
| Tomáš Veselý | tomas@vesely.cz |
Začněte programovat zdarma
10/12