Función CASE() en MySQL

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *