Nasledujú podmienené výrazy v SQL
- Výraz CASE: Umožňuje vám použiť príkazy IF-THEN-ELSE bez toho, aby ste museli vyvolávať procedúry.
-
Input: SELECT GREATEST('XYZ', 'xyz') from dual;>Output: GREATEST('XYZ', 'xyz') xyz>Vysvetlenie: Hodnota ASCII malých abecied je väčšia.
-
Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->Vysvetlenie: Keďže je teda prítomné null, null sa zobrazí ako výstup (ako je uvedené v popise vyššie).
-
Input: SELECT IFNULL(1,0) FROM dual;>
Output: - 1>
vysvetlenie: Pretože žiadny výraz nie je nulový.
-
Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>
Vysvetlenie: Keďže výraz expr1 je nulový, zobrazí sa výraz výraz 2.
-
strong>Vstup: SELECT LEAST('XYZ', 'xyz') z dual; Výstup: LEAST('XYZ', 'xyz') XYZ>Vysvetlenie: Hodnota ASCII veľkých abecied je menšia.
-
Input: SELECT LEAST('XYZ', null, 'xyz') from dual; Output: LEAST('XYZ', null, 'xyz') ->Vysvetlenie: Keďže je teda prítomné null, null sa zobrazí ako výstup (ako je uvedené v popise vyššie).
V jednoduchom výraze CASE SQL vyhľadá prvý pár WHEN……THEN, pre ktorý sa výraz výraz rovná porovnávaniu_výraz a vráti návrat_výraz. Ak vyššie uvedená podmienka nie je splnená, existuje klauzula ELSE, SQL vráti else_expr. V opačnom prípade vráti hodnotu NULL.
Nemôžeme zadať doslovnú hodnotu null pre return_expr a else_expr. Všetky výrazy (výraz, porovnávací_výraz, návratový_výraz) musia byť rovnakého typu údajov.
Syntax:
CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>
Príklad:
Input : SELECT first_name, department_id, salary, CASE department_id WHEN 50 THEN 1.5*salary WHEN 12 THEN 2.0*salary ELSE salary END 'REVISED SALARY' FROM Employee;>
Výkon :

Vysvetlenie : Vo vyššie uvedených príkazoch SQL je dekódovaná hodnota department_id. Ak je to 50, mzda sa vypláca 1,5-násobok, ak je 12, mzda sa vypláca 2-násobne, inak sa mzda nemení. Funkcia DECODE: Uľahčuje podmienené otázky vykonávaním práce príkazu CASE alebo IF-THEN-ELSE.
Funkcia DECODE dekóduje výraz podobným spôsobom ako logika IF-THEN-ELSE používaná v rôznych jazykoch. Funkcia DECODE dekóduje výraz po jeho porovnaní s každou hľadanou hodnotou. Ak je výraz rovnaký ako vyhľadávanie, vráti sa výsledok.
Ak sa predvolená hodnota vynechá, vráti sa nulová hodnota, ak sa hľadaná hodnota nezhoduje so žiadnou z hodnôt výsledku.
Syntax:
DECODE (col/expression, search1, result1 [, search2, result2,........,] [, default])>
Input : SELECT first_name, department_id, salary, DECODE(department_id, 50, 1.5*salary, 12, 2.0*salary, salary) 'REVISED SALARY' FROM Employee;>
Výkon :
Vysvetlenie: Vo vyššie uvedených príkazoch SQL sa testuje hodnota department_id. Ak je to 50, mzda sa vypláca 1,5-násobok, ak je 12, mzda sa vypláca 2-násobne, inak sa mzda nemení.
POZNÁMKA: Rovnako ako výrazy CASE, COALESCE tiež nevyhodnotí argumenty napravo od prvého nájdeného nenulového argumentu.
Syntax:
COALESCE( value [, ......] )>
Input: SELECT COALESCE(last_name, '- NA -') from Employee;>
Výkon:
Vysvetlenie: - NA - zobrazí sa na mieste, kde je priezvisko nulové, inak sa zobrazia príslušné priezviská. GREATEST: Vráti najväčšiu hodnotu zo zoznamu ľubovoľného počtu výrazov. Pri porovnávaní sa rozlišujú malé a veľké písmená. Ak dátové typy všetkých výrazov v zozname nie sú rovnaké, ostatné všetky výrazy sa skonvertujú na dátový typ prvého výrazu na porovnanie a ak táto konverzia nie je možná, SQL vyvolá chybu.
POZNÁMKA: Vráti hodnotu null, ak má niektorý výraz v zozname hodnotu null.
Syntax:
GREATEST( expr1, expr2 [, .....] )>
Syntax:
IFNULL( expr1, expr2 )>
POZNÁMKA: Rovnako ako výrazy CASE a COALESCE, IN tiež nevyhodnotí argumenty napravo od prvého nájdeného nenulového argumentu.
Syntax:
WHERE column IN ( x1, x2, x3 [,......] )>
Input: SELECT * from Employee WHERE department_id IN(50, 12);>
Výkon:

Vysvetlenie: Všetky údaje o zamestnancoch sú zobrazené s ID oddelenia 50 alebo 12.
LEAST: Vráti najmenšiu hodnotu zo zoznamu ľubovoľného počtu výrazov. Pri porovnávaní sa rozlišujú malé a veľké písmená. Ak dátové typy všetkých výrazov v zozname nie sú rovnaké, ostatné všetky výrazy sa skonvertujú na dátový typ prvého výrazu na porovnanie a ak táto konverzia nie je možná, SQL vyvolá chybu.POZNÁMKA: Vráti hodnotu null, ak je niektorý výraz v zozname prázdny.
Syntax:
LEAST( expr1, expr2 [, ......] )>
Syntax:
hovno
NULLIF( value1, value2 )>
Príklad:
Input: SELECT NULLIF(9995463931, contact_num) from Employee;>
Výkon:

Vysvetlenie: NULL sa zobrazí pre zamestnanca, ktorého číslo sa zhoduje s daným číslom. Pre zvyšok hodnoty Zamestnanci sa vráti hodnota1.