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;
hvezdickykomentar
5Nejlepší RPG, jaké jsem za poslední roky hrál!
4Straš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.

Pokyny

Ukažte jméno a e-mail zákazníků, jejichž e-mail končí na @mail.cz, seřazené podle jména:

jmenoemail
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:

jmenoemail
Filip Benešfilip@benes.dev
Tereza Svobodovátereza@svobodovi.cz
Tomáš Veselýtomas@vesely.cz

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

10/12