CASE: Evaluando condiciones



La expresión CASE se utiliza para evaluar condiciones y de acuerdo a esto devolver un resultado, y se completa para su formato DE BÚSQUEDA con una sintaxis de la forma:

CASE expresión WHEN expresión de comparación THEN resultado afirmativo ELSE resultado en caso contrario END

Donde la expresión es cualquiera expresión sencilla evaluada con operadores, y expresión de comparación es un resultado posible de expresión, que de cumplirse obtenemos el resultado afirmativo, en cambio si no se cumple obtendremos el resultado del ELSE, veamos un ejemplo de como se escribe:

SELECT CASE WHEN nota >= 6 THEN 'si' ELSE 'no' END as [aprueba] FROM [alumnos]

Explicado en un lenguaje más coloquial sería en CASO de que se cumpla la expresión nota >= 6 ENTONCES el resultado será 'si' EN CASO CONTRARIO sera igual a 'no' y luego FIN de la instrucción.

El argumento ELSE es opcional, pudiendo no estar presente, para lo cual la sintaxis se acorta a:
SELECT CASE WHEN nota >= 6 THEN 'si' END as [aprueba] FROM [alumnos]
forma de la cual en caso de no ser mayor o igual a 6 la nota, el valor del campo APRUEBA será NULL.

La expresión CASE se puede escribir de dos formas posibles, la primera, SIMPLE, como describimos al comienzo de este artículo:
  • 1) CASE de formato SIMPLE
  • 2) CASE de formato BÚSQUEDA

  • El formato SIMPLE permite unicamente comprobar con una igualdad, respecto del valor de un campo, llamado valor de entrada, veremos un ejemplo donde tomamos el número del día de la semana, y su sintaxis es:

    SELECT

    CASE dia_semana
    WHEN 1 THEN 'domingo'
    WHEN 7 THEN 'sábado'
    ELSE 'día hábil'

    END as [jornada] FROM [días trabajados]

    El formato DE BÚSQUEDA se realiza buscando la primer comparación exitosa, en el orden propuesto dentro de la sentencia, y permite utilizar cualquier tipo de expresión con los operadores conocidos, y su sintaxis es como ya vimos al comienzo, aquí otro ejemplo:

    SELECT

    CASE WHEN nota < 4 THEN 'aplazado'
    CASE WHEN nota < 6 THEN 'regular'
    CASE WHEN nota < 8 THEN 'aprobado'
    ELSE 'sobresaliente'

    END as [nota final] FROM [alumnos]


    Para el caso de CASE Simple, tambien llamado Sencillo, si no hay coincidencia entre el valor de entrada del CASE y el resto de las opciones THEN, obtendremos como resultado el valor propuesto en el ELSE.

    Casi de la misma forma, para el CASE de BÚSQUEDA, si ocurridas todas las comparaciones, no se encuentra ninguna como resultado TRUE, se obtendrá definitivamente el valor que se encuentra en el ELSE.

    CASE ANIDADOS:

    las expresiones CASE se pueden anidar, se resuelven de afuera hacia adentro a medida que van ocurriendo en la consulta, y tiene la particularidad que se pueden anidar hasta 10 veces, más el CASE original, totalizando 11 tomas de decisión como máximo.

    Observaciones: las expresiones CASE pueden utilizarse perfectamente también dentro de las cláusulas de ordenamiento ORDER BY, así como dentro de las instrucciones UPDATE y SET.

    1) dentro de la cláusula ORDER BY quedaría:
    SELECT * FROM  nombre_de_tabla WHERE criterio_aplicado ORDER BY CASE WHEN expresión THEN 0 ELSE 1 END

    1) dentro de una instucción UPDATE quedaría:
    UPDATE nombre_de_tabla SET nombre_de_campo = CASE WHEN expresión THEN valor1 ELSE valor2 END WHERE criterio_aplicado

     
     



    Búsquedas más frecuentes
    Diseño y DesarrolloDiseño y desarrollo de sitios web