CASE WHEN en MySQL

Preet Sanghavi 3 enero 2023
CASE WHEN en MySQL

En este tutorial, nuestro objetivo es comprender cómo usar la declaración CASE WHEN en una base de datos MySQL.

Las empresas y organizaciones que manejan grandes cantidades de datos necesitan filtrar los datos en función de ciertas condiciones. Y si hay múltiples condiciones, se vuelve difícil para el programador escribir una consulta eficiente que pueda recuperar datos rápidamente.

MySQL nos ayuda a realizar esta operación con la ayuda de la sentencia CASE WHEN.

La declaración CASE WHEN es útil y se emplea en todos los lugares de trabajo que se ocupan del filtrado de datos en MySQL. Veamos este método en acción.

Pero antes de comenzar, creemos un conjunto de datos ficticio creando una tabla, student_details con algunas filas.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Preet","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

La consulta anterior crea una tabla con filas con el nombre y apellido del estudiante. Para ver las entradas en los datos, usamos el siguiente código:

SELECT * FROM student_details;

El código anterior daría el siguiente resultado:

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Preet	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

Como tenemos nuestra tabla configurada, filtremos estos datos usando la declaración CASE WHEN.

CASE WHEN en MySQL

Como se mencionó anteriormente, la instrucción CASE WHEN nos ayuda a obtener valores que cumplen la condición especificada en su expresión.

Esta es la sintaxis básica de la sentencia CASE WHEN:

CASE
    WHEN condition_1 THEN output_1
    WHEN condition_2 THEN output_2
    ELSE output_3
END;

El código antes mencionado devuelve la salida_1 cuando se cumple la condition_1, salida_2 cuando se cumple la condition_2 y salida_3 cuando no se cumplen ni la condition_1 ni la condition_2.

Ahora, filtremos la tabla student_details según el stu_id. Cuando el stu_id es menor o igual a tres, se desea imprimir student with smaller id, y cuando el stu_id es mayor a tres, se imprime student with greater id.

Podemos realizar esta operación con el siguiente código.

SELECT stu_id, stu_firstName,
CASE
    WHEN stu_id > 3 THEN 'student with greater id'
    ELSE 'student with smaller id'
END as case_result
FROM student_details;

El resultado de la consulta antes mencionada es el siguiente.

stu_id	stu_firstName	case_result
1		Preet			student with smaller id
2		Rich			student with smaller id
3		Veron			student with smaller id
4		Preet			student with greater id
5		Hash			student with greater id
6		Sachin			student with greater id
7		David			student with greater id

Como podemos ver en el bloque de código antes mencionado, los estudiantes con stu_id mayor que tres obtienen student with greater id como resultado del caso. De lo contrario, obtenemos student with smaller id como resultado del caso.

Nota
En el código antes mencionado, usamos el alias case_result para una mejor legibilidad con la palabra clave AS en MySQL.

Por lo tanto, con la ayuda de la declaración CASE WHEN, podemos pasar de manera eficiente por diferentes condiciones y encontrar datos coincidentes de una tabla en MySQL.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Artículo relacionado - MySQL Query