logo

SQL | Expresii condiționale

Următoarele sunt expresii condiționate în SQL

    Expresia CASE: Vă permite să utilizați instrucțiuni IF-THEN-ELSE fără a fi nevoie să invocați proceduri.
    Într-o expresie CASE simplă, SQL caută prima pereche WHEN……THEN pentru care expr este egal cu comparison_expr și returnează return_expr. Dacă condiția de mai sus nu este îndeplinită, există o clauză ELSE, SQL returnează else_expr. În caz contrar, returnează NULL.
    Nu putem specifica literal null pentru return_expr și else_expr. Toate expresiile (expr, comparison_expr, return_expr) trebuie să fie de același tip de date.
    Sintaxă:



     CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>

    Exemplu:

       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;>

      Ieșire:

    Explicaţie : În instrucțiunile SQL de mai sus, valoarea departamentului_id este decodificată. Daca este 50 atunci salariul se face de 1,5 ori, daca este 12 atunci salariul se face de 2 ori, altfel nu se schimba salariul. Funcția DECODE: facilitează interogările condiționate prin efectuarea unei instrucțiuni CASE sau IF-THEN-ELSE.
    Funcția DECODE decodifică o expresie într-un mod similar cu logica IF-THEN-ELSE utilizată în diferite limbi. Funcția DECODARE decodifică expresia după ce o compară cu fiecare valoare de căutare. Dacă expresia este aceeași cu căutarea, rezultatul este returnat.
    Dacă valoarea implicită este omisă, este returnată o valoare nulă unde o valoare de căutare nu se potrivește cu niciuna dintre valorile rezultatului.
    Sintaxă:



     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;>

    Ieșire:

    Explicaţie: În instrucțiunile SQL de mai sus, valoarea departamentului_id este testată. Daca este 50 atunci salariul se face de 1,5 ori, daca este 12 atunci salariul se face de 2 ori, altfel nu se schimba salariul.

    interfață comparabilă în java
    COALESCE : Returnează primul argument non-nul. Null este returnat numai dacă toate argumentele sunt nule. Este adesea folosit pentru a înlocui o valoare implicită cu valorile nule atunci când datele sunt preluate pentru afișare.
    NOTĂ: La fel ca expresiile CASE, COALESCE, de asemenea, nu va evalua argumentele din dreapta primului argument non-nul găsit.
    Sintaxă:

     COALESCE( value [, ......] )>
     Input: SELECT COALESCE(last_name, '- NA -') from Employee;>

    Ieșire:

    Explicaţie: - NA - va fi afișat în locul unde numele de familie este nul, altfel vor fi afișate numele de familie respective. GREATEST: Returnează cea mai mare valoare dintr-o listă cu orice număr de expresii. Comparația este sensibilă la majuscule. Dacă tipurile de date ale tuturor expresiilor din listă nu sunt aceleași, restul toate expresiile sunt convertite în tipul de date al primei expresii pentru comparație și dacă această conversie nu este posibilă, SQL va genera o eroare.
    NOTĂ: Returnează null dacă orice expresie din listă este nulă.
    Sintaxă:



     GREATEST( expr1, expr2 [, .....] )>
    •  Input: SELECT GREATEST('XYZ', 'xyz') from dual;>
       Output: GREATEST('XYZ', 'xyz') xyz>

      Explicaţie: Valoarea ASCII a alfabetelor mici este mai mare.

    •  Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->

      Explicaţie: Deoarece null este prezent, null va fi afișat ca ieșire (după cum este menționat în descrierea de mai sus).

    IFNULL: Dacă expr1 nu este NULL, returnează expr1; altfel returnează expr2. Returnează o valoare numerică sau șir, în funcție de contextul în care este utilizată.
    Sintaxă:

     IFNULL( expr1, expr2 )>
    •  Input: SELECT IFNULL(1,0) FROM dual;>
       Output: - 1>

      Explicatie: Deoarece, nicio expresie nu este nulă.

    •  Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>

      Explicaţie: Deoarece expr1 este nulă, prin urmare, expr2 este afișată.

    IN: Verifică dacă o valoare este prezentă într-un set de valori și poate fi utilizată cu WHERE, CHECK și crearea de vizualizări.
    NOTĂ: La fel ca și expresiile CASE și COALESCE, și IN nu va evalua argumentele din dreapta primului argument non-nul găsit.
    Sintaxă:

     WHERE column IN ( x1, x2, x3 [,......] )>
     Input: SELECT * from Employee WHERE department_id IN(50, 12);>

    Ieșire:

    Explicaţie: Toate datele angajaților sunt afișate cu ID-ul departamentului 50 sau 12.

    LEAST: Returnează cea mai mică valoare dintr-o listă de orice număr de expresii. Comparația este sensibilă la majuscule. Dacă tipurile de date ale tuturor expresiilor din listă nu sunt aceleași, restul toate expresiile sunt convertite în tipul de date al primei expresii pentru comparație și dacă această conversie nu este posibilă, SQL va genera o eroare.
    NOTĂ: Returnează null dacă orice expresie din listă este nulă.

    Sintaxă:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Intrare: SELECTAȚI MINIM ('XYZ', 'xyz') din dual; Ieșire: LEAST('XYZ', 'xyz') XYZ>

      Explicaţie: Valoarea ASCII a alfabetelor majuscule este mai mică.

    •  Input: SELECT LEAST('XYZ', null, 'xyz') from dual; Output: LEAST('XYZ', null, 'xyz') ->

      Explicaţie: Deoarece null este prezent, null va fi afișat ca ieșire (după cum este menționat în descrierea de mai sus).

    NULLIF: returnează o valoare nulă dacă valoare1=valoare2, în caz contrar returnează valoare1.
    Sintaxă:

     NULLIF( value1, value2 )>

    Exemplu:

     Input: SELECT NULLIF(9995463931, contact_num) from Employee;>

    Ieșire:

Explicaţie: NULL este afișat pentru angajatul al cărui număr este potrivit cu numărul dat. Pentru restul angajaților, se returnează valoarea1.