602SQL-Úplná dokumentace Index  

Podmíněný výraz CASE (SQL)

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