Textové funkce
Funkce umějí pracovat i s textem. UPPER(x) napíše text velkými písmeny, LOWER(x) malými a LENGTH(x) (délka) řekne, kolik má znaků:
SELECT jmeno, UPPER(jmeno) AS velkymi, LENGTH(jmeno) AS znaku
FROM zakaznici
LIMIT 3;| jmeno | velkymi | znaku |
|---|---|---|
| Eva Novotná | EVA NOVOTNá | 11 |
| Jakub Dvořák | JAKUB DVOřáK | 12 |
| Tereza Svobodová | TEREZA SVOBODOVá | 16 |
Ve druhém sloupci něco nesedí: EVA NOVOTNá. UPPER a LOWER v SQLite převádějí jen písmena anglické abecedy, takže písmena s háčkem nebo čárkou nechávají, jak jsou. SQLite je malá databáze a tabulky všech písmen světa v sobě nemá; jiné databáze to umějí správně. Tady je proto používejte na texty bez diakritiky, třeba na názvy her: LOWER('Moon Farm') dá moon farm.
LENGTH naopak česká písmena počítá správně. Počítá všechny znaky: písmena, číslice, mezery i interpunkci. Eva Novotná jich má 11, i s mezerou.
K čemu to je? Banner na úvodní stránce obchodu ukazuje názvy her velkými písmeny, formulář kontroluje, že se jméno vejde na štítek balíku, a LOWER pomůže, když porovnáváte texty a nevíte, jak jsou napsané: LOWER(zanr) je rpg, ať je v tabulce RPG, Rpg, nebo rpg. To využijete později v této lekci ve WHERE.
Funkce nemění data v tabulce, jen to, co dotaz ukáže. Po dotazu nahoře je v tabulce pořád Eva Novotná, stejně jako předtím. To platí o každém dotazu: data jen čte.
A NULL zůstává NULL: délka chybějícího komentáře není 0, ale NULL. Funkce, která nedostane žádnou hodnotu, nemá s čím pracovat, a tak žádnou hodnotu nevrátí. Jak NULL nahradit něčím jiným, se naučíte brzy.
Typická chyba: název sloupce v apostrofech. UPPER('nazev') nepracuje se sloupcem nazev, ale napíše velkými písmeny text 'nazev', takže v každém řádku bude NAZEV. Text v apostrofech je vždycky jen text; názvy sloupců pište bez apostrofů.
Jak psát:
Pokyny
Banner na úvodní stránce obchodu ukazuje názvy her velkými písmeny a vejde se na něj jen 12 znaků. Abyste viděli, které názvy se vejdou, ukažte název každé hry velkými písmeny jako napis a délku názvu jako znaku. Hry seřaďte podle názvu:
| napis | znaku |
|---|---|
| BAKERY STORY | 12 |
| CASTLE SIEGE | 12 |
| CUBE LOGIC | 10 |
| … | … |
Pod tím ukažte recenze hry Dragon Forge (hra_id 1): zakaznik_id, hvězdičky a délku komentáře jako znaku, seřazené podle zakaznik_id. Jedna z recenzí komentář nemá:
| zakaznik_id | hvezdicky | znaku |
|---|---|---|
| 1 | 4 | 33 |
| 2 | 5 | 46 |
| 5 | 3 | 21 |
| 8 | 5 | NULL |
Začněte programovat zdarma
3/10