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 ]
ENDCode 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 ]
ENDCode 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.