logo

SQL | Expresiones condicionales

Las siguientes son expresiones condicionales en SQL

    La expresión CASE: le permite utilizar declaraciones IF-THEN-ELSE sin tener que invocar procedimientos.
    En una expresión CASE simple, SQL busca el primer par WHEN……THEN para el cual expr es igual a expr_comparación y devuelve expr_retorno. Si no se cumple la condición anterior, existe una cláusula ELSE y el SQL devuelve else_expr. De lo contrario, devuelve NULL.
    No podemos especificar un valor nulo literal para return_expr y else_expr. Todas las expresiones (expr, expr_comparación, expr_retorno) deben ser del mismo tipo de datos.
    Sintaxis:



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

    Ejemplo:

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

      Producción :

    Explicación : En las sentencias SQL anteriores, se decodifica el valor de depart_id. Si es 50, entonces el salario se multiplica 1,5; si es 12, el salario se multiplica 2; de lo contrario, no hay cambios en el salario. La función DECODE: facilita las consultas condicionales realizando el trabajo de una declaración CASE o IF-THEN-ELSE.
    La función DECODIFICAR decodifica una expresión de forma similar a la lógica IF-THEN-ELSE utilizada en varios idiomas. La función DECODE decodifica la expresión después de compararla con cada valor de búsqueda. Si la expresión es la misma que la búsqueda, se devuelve el resultado.
    Si se omite el valor predeterminado, se devuelve un valor nulo cuando un valor de búsqueda no coincide con ninguno de los valores de resultado.
    Sintaxis:



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

    Producción :

    Explicación: En las declaraciones SQL anteriores, se prueba el valor de depart_id. Si es 50, entonces el salario se multiplica 1,5; si es 12, el salario se multiplica 2; de lo contrario, no hay cambios en el salario.

    COALESCE: Devuelve el primer argumento no nulo. Nulo se devuelve sólo si todos los argumentos son nulos. A menudo se utiliza para sustituir un valor predeterminado por valores nulos cuando se recuperan datos para su visualización.
    NOTA: Al igual que las expresiones CASE, COALESCE tampoco evaluará los argumentos a la derecha del primer argumento no nulo encontrado.
    Sintaxis:

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

    Producción:

    Explicación: - NA - se mostrará en el lugar donde el apellido es nulo; de lo contrario, se mostrarán los apellidos respectivos. MAYOR: Devuelve el valor más grande de una lista de cualquier número de expresiones. La comparación distingue entre mayúsculas y minúsculas. Si los tipos de datos de todas las expresiones en la lista no son iguales, todas las expresiones se convierten al tipo de datos de la primera expresión para compararlas y si esta conversión no es posible, SQL arrojará un error.
    NOTA: Devuelve nulo si alguna expresión de la lista es nula.
    Sintaxis:



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

      Explicación: El valor ASCII de los alfabetos pequeños es mayor.

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

      Explicación: Dado que null está presente, null se mostrará como salida (como se mencionó en la descripción anterior).

    IFNULL: si expr1 no es NULL, devuelve expr1; de lo contrario devuelve expr2. Devuelve un valor numérico o de cadena, según el contexto en el que se utiliza.
    Sintaxis:

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

      Explicación : Desde entonces, ninguna expresión es nula.

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

      Explicación: Dado que expr1 es nulo, se muestra expr2.

    IN: Comprueba si un valor está presente dentro de un conjunto de valores y se puede utilizar con WHERE, CHECK y creación de vistas.
    NOTA: Al igual que las expresiones CASE y COALESCE, IN tampoco evaluará los argumentos a la derecha del primer argumento no nulo encontrado.
    Sintaxis:

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

    Producción:

    Explicación: Todos los datos de los empleados se muestran con el ID de departamento 50 o 12.

    MENOR: Devuelve el valor más pequeño de una lista de cualquier número de expresiones. La comparación distingue entre mayúsculas y minúsculas. Si los tipos de datos de todas las expresiones en la lista no son iguales, todas las expresiones se convierten al tipo de datos de la primera expresión para compararlas y si esta conversión no es posible, SQL arrojará un error.
    NOTA: Devuelve nulo si alguna expresión de la lista es nula.

    Sintaxis:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Entrada: SELECT MENOS('XYZ', 'xyz') de dual; Salida: MENOS('XYZ', 'xyz') XYZ>

      Explicación: El valor ASCII de los alfabetos en mayúscula es menor.

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

      Explicación: Dado que null está presente, null se mostrará como salida (como se mencionó en la descripción anterior).

    NULLIF: Devuelve un valor nulo si valor1 = valor2; de lo contrario, devuelve valor1.
    Sintaxis:

     NULLIF( value1, value2 )>

    Ejemplo:

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

    Producción:

Explicación: Se muestra NULL para el empleado cuyo número coincide con el número dado. Para el resto de los empleados, se devuelve el valor 1.