logo

SQL | Podmienené výrazy

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.
    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í.

    COALESCE : Vráti prvý nenulový argument. Hodnota Null sa vráti iba vtedy, ak sú všetky argumenty null. Často sa používa na nahradenie predvolenej hodnoty za nulové hodnoty pri získavaní údajov na zobrazenie.
    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 [, .....] )>
    •  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).

    IFNULL: Ak výraz1 nie je NULL, vráti výraz1; inak vráti expr2. Vráti číselnú alebo reťazcovú hodnotu v závislosti od kontextu, v ktorom sa používa.
    Syntax:

     IFNULL( expr1, expr2 )>
    •  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.

    IN: Kontroluje, či je hodnota prítomná v množine hodnôt a možno ju použiť s WHERE, CHECK a vytváraním pohľadov.
    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 [, ......] )>
    •  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).

    NULLIF: Vráti hodnotu null, ak hodnota1=hodnota2, inak vráti hodnotu1.
    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.