|
![]() | Výrazy | Název sloupce | ![]() |
výraz_CASE ::= jednoduchý_CASE | podmínkový_CASE
jednoduchý_CASE ::= CASE výraz1 { WHEN výraz2 THEN výraz3 }… [ ELSE výraz4 ] END
podmínkový_CASE ::= CASE { WHEN podmínka THEN výraz3 }… [ ELSE výraz4 ] END
Výraz CASE slouží k výběru hodnoty jednoho z výrazů na základě udaných podmínek. V jednoduchém CASE se zleva doprava hledá větev WHEN, v níž výraz2 má stejnou hodnotu jako výraz1. V podmínkovém CASE se zleva doprava hledá větev WHEN, v níž je podmínka splněná. Je-li nalezena vyhovující větev, pak hodnotou výrazu CASE se stane hodnota výrazu3 v této větvi. Pokud žádná větev nevyhoví, je hodnotou výrazu CASE hodnota výrazu4, a není-li výraz4 uveden, pak NULL.
Všechny výrazy2 musí být takového typu, aby byly porovnatelné s výrazem1. Všechny výrazy3 a výraz4 musí být převeditelné na společný typ.
Příklad použití:
SELECT Zakaznici.jmeno, CASE
WHEN SUM(Vypujcky.cena) IS NULL THEN 0
ELSE SUM(Vypujcky.cena)
END
FROM Zakaznici LEFT OUTER JOIN Vypujcky ON (Zakaznici.rod_cis=Vypujcky. rod_cis)
GROUP BY Zakaznici.jmeno
Poznámka:
Stejný příklad lze vyřešit elegantněji pomocí funkce COALESCE
Příklad použití:
...
CASE
WHEN n <> 0 THEN x/n
ELSE 0
END
...
Příklad použití jednoduchého CASE:
SELECT jmeno, vek, CASE pohlavi
WHEN 1 THEN 'muž'
WHEN 2 THEN 'žena'
ELSE 'neurčeno'
END,
adresa
FROM Lidi
![]() | Výrazy | Název sloupce | ![]() |