logo

SQL | Expressions condicionals

A continuació es mostren les expressions condicionals en SQL

    L'expressió CASE: us permet utilitzar instruccions IF-THEN-ELSE sense haver d'invocar procediments.
    En una expressió CASE simple, l'SQL cerca el primer parell WHEN……THEN per al qual expr és igual a comparison_expr i retorna return_expr. Si la condició anterior no es compleix, existeix una clàusula ELSE, l'SQL retorna else_expr. En cas contrari, retorna NULL.
    No podem especificar un null literal per a l'expr_retorn i l'expr_else. Totes les expressions (expr, comparison_expr, return_expr) han de ser del mateix tipus de dades.
    Sintaxi:



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

    Exemple:

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

      Sortida:

    Explicació : A les sentències SQL anteriors, es descodifica el valor de department_id. Si és de 50, el sou es fa 1,5 vegades, si és de 12, el sou es fa 2 vegades, en cas contrari no hi ha cap canvi de sou. La funció DECODE: facilita les consultes condicionals fent el treball d'una instrucció CASE o IF-THEN-ELSE.
    La funció DECODIFICAR descodifica una expressió d'una manera similar a la lògica IF-THEN-ELSE utilitzada en diversos idiomes. La funció DECODIFICAR descodifica l'expressió després de comparar-la amb cada valor de cerca. Si l'expressió és la mateixa que la cerca, es retorna el resultat.
    Si s'omet el valor predeterminat, es retorna un valor nul on un valor de cerca no coincideix amb cap dels valors del resultat.
    Sintaxi:



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

    Sortida:

    Explicació: A les sentències SQL anteriors, es prova el valor de department_id. Si és de 50, el sou es fa 1,5 vegades, si és de 12, el sou es fa 2 vegades, en cas contrari no hi ha cap canvi de sou.

    COALESCE : retorna el primer argument no nul. Només es retorna Null si tots els arguments són nuls. Sovint s'utilitza per substituir un valor predeterminat per valors nuls quan es recuperen dades per mostrar-les.
    NOTA: Igual que les expressions CASE, COALESCE tampoc avaluarà els arguments a la dreta del primer argument no nul trobat.
    Sintaxi:

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

    Sortida:

    Explicació: - NA - es mostrarà al lloc on el cognom és nul, sinó es mostraran els cognoms respectius. MÉS GRAN: retorna el valor més gran d'una llista de qualsevol nombre d'expressions. La comparació distingeix entre majúscules i minúscules. Si els tipus de dades de totes les expressions de la llista no són iguals, totes les expressions restants es converteixen al tipus de dades de la primera expressió per a la comparació i si aquesta conversió no és possible, SQL generarà un error.
    NOTA: Retorna null si qualsevol expressió de la llista és nul·la.
    Sintaxi:



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

      Explicació: El valor ASCII dels alfabets petits és més gran.

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

      Explicació: Com que null està present, es mostrarà null com a sortida (com s'ha esmentat a la descripció anterior).

    IFNULL: si expr1 no és NULL, retorna expr1; en cas contrari, retorna expr2. Retorna un valor numèric o de cadena, depenent del context en què s'utilitza.
    Sintaxi:

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

      Explicació: Atès que cap expressió és nul·la.

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

      Explicació: Com que expr1 és nul·la, es mostra expr2.

    IN: Comprova si hi ha un valor dins d'un conjunt de valors i es pot utilitzar amb WHERE, CHECK i la creació de vistes.
    NOTA: Igual que les expressions CASE i COALESCE, IN tampoc avaluarà els arguments a la dreta del primer argument no nul trobat.
    Sintaxi:

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

    Sortida:

    Explicació: Totes les dades dels empleats es mostren amb l'ID de departament 50 o 12.

    MENY: retorna el valor més petit d'una llista de qualsevol nombre d'expressions. La comparació distingeix entre majúscules i minúscules. Si els tipus de dades de totes les expressions de la llista no són iguals, totes les expressions restants es converteixen al tipus de dades de la primera expressió per a la comparació i si aquesta conversió no és possible, SQL generarà un error.
    NOTA: Retorna null si alguna expressió de la llista és nul·la.

    Sintaxi:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Entrada: SELECCIONA MENOR('XYZ', 'xyz') de dual; Sortida: LAST('XYZ', 'xyz') XYZ>>> 

      Explicació: El valor ASCII dels alfabets majúscules és menor.

    • Explicació: Com que null està present, es mostrarà null com a sortida (com s'ha esmentat a la descripció anterior).

    NULLIF: retorna un valor nul si valor1=valor2, en cas contrari retorna valor1.
    Sintaxi:

     NULLIF( value1, value2 )>

    Exemple:

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

    Sortida:

Explicació: Es mostra NULL per a l'empleat el número del qual coincideix amb el número donat. Per a la resta dels empleats, es retorna el valor1.