Shrnutí: v tomto tutoriálu se dozvíte o SQLite CASE
výraz pro přidání podmíněné logiky do dotazu.
SQLite CASE
expression vyhodnotí seznam podmínek a vrátí výraz založený na výsledku vyhodnocení.
CASE
výraz je podobný IF-THEN-ELSE
v jiných programovacích jazycích.
Můžete použít CASE
výraz v jakékoli klauzuli nebo příkazu, který přijímá platný výraz. Můžete například použít CASE
výraz v klauzulích, jako je WHERE
, ORDER BY
, HAVING
, SELECT
a příkazy jako SELECT
, UPDATE
a DELETE
.
SQLite poskytuje dvě formy CASE
výraz:jednoduchý CASE
a hledali CASE
.
Jednoduché SQLite CASE
výraz
Jednoduchý CASE
výraz porovná výraz se seznamem výrazů a vrátí výsledek. Následující text ilustruje syntaxi jednoduchého CASE
výraz.
CASE case_expression
WHEN when_expression_1 THEN result_1
WHEN when_expression_2 THEN result_2
...
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
Jednoduchý CASE
výraz porovnává case_expression
k výrazu se objeví v prvním WHEN
klauzule when_expression_1
, pro rovnost.
Pokud case_expression
rovná se when_expression_1
, jednoduchý CASE
vrátí výraz v odpovídajícím THEN
klauzule, což je result_1
.
Jinak jednoduchý CASE
výraz porovnává case_expression
s výrazem v dalším WHEN
doložka.
V případě, že žádný case_expression
odpovídá when_expression
, CASE
výraz vrátí result_else
v ELSE
doložka. Pokud vynecháte ELSE
klauzule CASE
výraz vrátí hodnotu NULL.
Jednoduchý CASE
výraz používá vyhodnocení zkratu. Jinými slovy, vrátí výsledek a přestane vyhodnocovat další podmínky, jakmile najde shodu.
Jednoduchý CASE
příklad
Pojďme se podívat na customers
tabulky ve vzorové databázi.

Předpokládejme, že musíte vytvořit hlášení skupin zákazníků s logikou, že pokud se zákazník nachází v USA, tento zákazník patří do tuzemské skupiny, v opačném případě zákazník patří do zahraniční skupiny.
K vytvoření tohoto přehledu použijte jednoduchý CASE
výraz v SELECT
prohlášení takto:
SELECT customerid,
firstname,
lastname,
CASE country
WHEN 'USA'
THEN 'Domestic'
ELSE 'Foreign'
END CustomerGroup
FROM
customers
ORDER BY
LastName,
FirstName;
Code language: SQL (Structured Query Language) (sql)
Zkuste to
SQLite prohledal CASE
výraz
Hledaný CASE
výraz vyhodnocuje seznam výrazů a rozhoduje o výsledku. Všimněte si, že jednoduchý CASE
výraz porovnává pouze rovnost, zatímco hledaný CASE
výraz může používat jakékoli formy srovnání.
Následující text ilustruje syntaxi hledaného CASE
výraz.
CASE
WHEN bool_expression_1 THEN result_1
WHEN bool_expression_2 THEN result_2
[ ELSE result_else ]
END
Code language: SQL (Structured Query Language) (sql)
Hledaný CASE
výraz vyhodnotí booleovské výrazy v zadané sekvenci a vrátí odpovídající výsledek, pokud se výraz vyhodnotí jako true.
V případě, že se žádný výraz nevyhodnotí jako true, hledaný CASE
expression vrátí výraz v ELSE
doložka, pokud je uvedena. Pokud vynecháte ELSE
klauzule, hledaný CASE
výraz vrátí NULL
.
Podobné jednoduchému CASE
výraz, hledaný CASE
výraz zastaví vyhodnocení, když je splněna podmínka.
Hledáno CASE
příklad
Použijeme tracks
stůl pro demonstraci.

Předpokládejme, že chcete klasifikovat skladby na základě jejich délky, například méně než minuta, skladba je krátká; mezi 1 a 5 minutami je stopa střední; delší než 5 minut, skladba je dlouhá.
Chcete-li toho dosáhnout, použijte hledaný CASE
výraz takto:
SELECT
trackid,
name,
CASE
WHEN milliseconds < 60000 THEN
'short'
WHEN milliseconds > 60000 AND milliseconds < 300000 THEN 'medium'
ELSE
'long'
END category
FROM
tracks;
Code language: SQL (Structured Query Language) (sql)
Zkuste to

V tomto tutoriálu jste se dozvěděli o SQLite CASE
výraz k vytvoření podmíněné logiky uvnitř dotazu SQL.