La función CASE() en MySQL se usa para encontrar un valor pasando por alto las condiciones siempre que alguna condición satisfaga la declaración dada; de lo contrario, devuelve la declaración en una parte else. Sin embargo, cuando se cumple una condición, deja de leer más y devuelve la salida.
Características:
- Esta función devuelve la declaración en la parte else si ninguna de las condiciones establecidas es verdadera.
- Esta función devuelve NULL si ninguna de las condiciones establecidas es verdadera y tampoco hay otra parte.
- Esta función viene en Funciones Avanzadas.
- Esta función acepta dos parámetros, a saber, condiciones y resultados.
Sintaxis:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END;
Parámetro:
Este método acepta dos parámetros como se indica a continuación:
- condition1, condition2, … conditionN: Condiciones específicas que se determinan en el orden en que se establecen.
- result1, result2, …resultN: salida especificada que se devolverá si se cumple la condición establecida.
Devoluciones: devuelve un valor pasando por alto las condiciones siempre que alguna condición satisfaga la declaración dada; de lo contrario, devuelve la declaración en una parte else. Y si ninguna de las condiciones se cumple y no hay otra parte, devuelve NULL.
Ejemplo 1: Usar la función CASE() y obtener el resultado.
CREATE TABLE float01001 ( user_id int NOT NULL AUTO_INCREMENT, float_val float, PRIMARY KEY(user_id) ); INSERT float01001(float_val) VALUES (1.9); INSERT float01001(float_val) VALUES (1.1); INSERT float01001(float_val) VALUES (3.9); INSERT float01001(float_val) VALUES (5.0); INSERT float01001(float_val) VALUES (10.9); SELECT float_val, CASE WHEN float_val > 5 THEN "The value is greater than 5" WHEN float_val = 5 THEN "The value is 5" ELSE "The value is under 5" END as float_txt FROM float01001;
Producción:
float_val | float_txt ------------------------------------------- 1.9 | The value is under 5 ------------------------------------------- 1.1 | The value is under 5 ------------------------------------------- 3.9 | The value is under 5 ------------------------------------------- 5 | The value is 5 ------------------------------------------- 10.9 | The value is greater than 5
Ejemplo 2:
Usando la función CASE() y verificando si la longitud del valor flotante indicado es mayor, menor o igual a 4.
CREATE TABLE float01001 ( user_id int NOT NULL AUTO_INCREMENT, float_val float, PRIMARY KEY(user_id) ); INSERT float01001(float_val) VALUES (9.0); INSERT float01001(float_val) VALUES (7.7); INSERT float01001(float_val) VALUES (30.91); INSERT float01001(float_val) VALUES (8.0); INSERT float01001(float_val) VALUES (10.9); SELECT float_val, CASE WHEN LENGTH(float_val) > 4 THEN "The length is greater than 4" WHEN LENGTH(float_val) = 4 THEN "The length is 4" ELSE "The length is less than 4" END as float_txt FROM float01001;
Producción:
float_val | float_txt ------------------------------------------- 9 | The length is less than 4 ------------------------------------------- 7.7 | The length is less than 4 ------------------------------------------- 30.91 | The length is greater than 4 ------------------------------------------- 8.0 | The length is less than 4 ------------------------------------------- 10.9 | The length is 4
Ejemplo 3:
Utilizando la función CASE() y comprobando si el MRP del artículo indicado es superior a 400 o no.
CREATE TABLE package099 ( user_id int NOT NULL AUTO_INCREMENT, item VARCHAR(10), mrp int, PRIMARY KEY(user_id) ); INSERT package099(item, mrp) VALUES ('book1', 350); INSERT package099(item, mrp) VALUES ('book2', 500); SELECT mrp, CASE WHEN mrp > 400 THEN "Buy this item" ELSE "Don't buy this item" END as txt FROM package099;
Producción:
mrp | txt ------------------------------ 350 | Don't buy this item ------------------------------ 500 | Buy this item
Ejemplo 4:
Uso de la función CASE() y verificación de pérdidas o ganancias.
CREATE TABLE package72 ( user_id int NOT NULL AUTO_INCREMENT, item VARCHAR(10), mrp int, sp int, PRIMARY KEY(user_id) ); INSERT package72(item, mrp, sp) VALUES ('book1', 250, 255); INSERT package72(item, mrp, sp) VALUES ('book2', 350, 370); INSERT package72(item, mrp, sp) VALUES ('book3', 400, 350); SELECT mrp,sp, CASE WHEN sp > mrp THEN "Profit" ELSE "Loss" END as PL FROM package72;
Producción:
mrp | sp | PL ----------------------- 250 | 255 | Profit ----------------------- 350 | 370 | Profit ---------------------- 400 | 350 | Loss
Aplicación: esta función se usa para encontrar un valor pasando por alto las condiciones siempre que alguna condición satisfaga la declaración dada; de lo contrario, devuelve la declaración en una parte else.
Publicación traducida automáticamente
Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA