CASE: Uso y Ejemplos en Procedimientos SQL
Cuando se trata de manipular y analizar datos en una base de datos, es fundamental contar con herramientas efectivas que permitan tomar decisiones informadas.
En este sentido, la instrucción CASE de SQL Server se posiciona como una de las más poderosas y versátiles, permitiendo evaluar condiciones y ejecutar acciones específicas en función de los resultados.
A continuación, exploraremos los usos y ejemplos de esta instrucción en procedimientos SQL, descubriendo cómo puede ser utilizada para resolver problemas complejos y mejorar significativamente la eficiencia en la gestión de datos.
Introducción a las sentencias CASE en SQL
Las sentencias CASE en SQL son una herramienta poderosa para controlar el flujo de ejecución de una consulta o procedimiento almacenado.
Permiten evaluar condiciones y realizar acciones específicas según sea necesario.En este artículo, exploraremos las sentencias CASE, su definición, función y ventajas en el contexto de los procedimientos SQL.
En términos generales, las sentencias CASE se utilizan para evaluar una condición y, en función del resultado, ejecutar una acción específica.
Esto permite a los desarrolladores crear lógicas complejas y condicionales en sus consultas y procedimientos almacenados.
Las sentencias CASE se utilizan comúnmente en procedimientos almacenados para realizar actualizaciones condicionales en bases de datos.
Por ejemplo, se pueden utilizar para actualizar un registro solo si se cumple una condición específica.
Las sentencias CASE son una herramienta fundamental en SQL para controlar el flujo de ejecución y realizar acciones condicionales.
Definición y función
Las sentencias CASE en SQL se definen como una instrucción que evalúa una condición y, en función del resultado, ejecuta una acción específica.
La sentencia CASE tiene la siguiente estructura básica:
CASE WHEN condición THEN acción [WHEN condición THEN acción] ... ELSE acción END CASE;
Donde:
- condición: es la condición que se evalúa.
- acción: es la acción que se ejecutará si se cumple la condición.
- ELSE: es la acción que se ejecutará si no se cumple ninguna de las condiciones.
Las sentencias CASE pueden ser utilizadas en consultas, procedimientos almacenados y disparadores para controlar el flujo de ejecución y realizar acciones condicionales.
Existen dos tipos de sentencias CASE en SQL:
- SENTENCIA CASE SIMPLE: se utiliza para entrar en lógicas basadas en un valor literal.
- SENTENCIA CASE BUSCADA: se utiliza para entrar en lógicas basadas en el valor de una expresión.
La cláusula WHEN define el valor que, cuando se satisface, determina el flujo de control.
Por ejemplo, supongamos que queremos actualizar un registro en una base de datos solo si el valor de una columna es mayor que 10.
Podemos utilizar una sentencia CASE para lograr esto:
UPDATE tabla SET columna = 'nuevo_valor' WHERE CASE WHEN columna > 10 THEN 1 ELSE 0 END = 1;
En este ejemplo, la sentencia CASE evalúa si el valor de la columna es mayor que 10.
Si es cierto, se actualiza el registro.De lo contrario, no se realizará ninguna acción.
Tipo de sentencias CASE
Las sentencias CASE en SQL son una herramienta poderosa para controlar el flujo de ejecución de un procedimiento almacenado o una consulta, permitiendo así una mayor flexibilidad y dinamismo en la lógica de negocio.
Existiendo dos tipos de sentencias CASE: la sentencia CASE simple y la sentencia CASE buscada.
La elección del tipo de sentencia CASE adecuada depende del tipo de condición que se desee evaluar y de la complejidad de la lógica de negocio.
A continuación, se presentan los detalles de cada tipo de sentencia CASE.
Sentencia CASE simple
La sentencia CASE simple es utilizada cuando se necesita evaluar una condición basada en un valor literal.
Esta sentencia se utiliza para comparar un valor con una lista de valores y ejecutar una acción específica cuando se encuentra una coincidencia.
La sintaxis básica de la sentencia CASE simple es la siguiente:
CASE valor WHEN valor1 THEN resultado1 [WHEN valor2 THEN resultado2] ... [ELSE resultadoN] END
Donde:
- valor: es el valor que se evalúa.
- valor1, valor2, ...: son los valores que se comparan con el valor evaluado.
- resultado1, resultado2, ...: son las acciones que se ejecutan cuando se encuentra una coincidencia.
- ELSE resultadoN: es la acción que se ejecuta cuando no se encuentra ninguna coincidencia.
Ejemplo:
SELECT CASE gender WHEN 'M' THEN 'Masculino' WHEN 'F' THEN 'Femenino' ELSE 'Desconocido' END AS genero FROM clientes;
En este ejemplo, se utiliza la sentencia CASE simple para evaluar el valor de la columna "gender" y asignar un género específico en función del valor.
Sentencia CASE buscada
La sentencia CASE buscada es utilizada cuando se necesita evaluar una condición más compleja, basada en una expresión que involucre operaciones lógicas y aritméticas.
Esta sentencia se utiliza para evaluar una condición y ejecutar una acción específica cuando se cumple la condición.
La sintaxis básica de la sentencia CASE buscada es la siguiente:
CASE WHEN condición1 THEN resultado1 [WHEN condición2 THEN resultado2] ... [ELSE resultadoN] END
Donde:
- condición1, condición2, ...: son las condiciones que se evalúan.
- resultado1, resultado2, ...: son las acciones que se ejecutan cuando se cumple la condición.
- ELSE resultadoN: es la acción que se ejecuta cuando no se cumple ninguna condición.
Ejemplo:
SELECT CASE WHEN edad > 18 THEN 'Mayor de edad' WHEN edad >= 13 AND edad < 18 THEN 'Adolescente' ELSE 'Menor de edad' END AS grupo_etario FROM clientes;
En este ejemplo, se utiliza la sentencia CASE buscada para evaluar la edad de los clientes y asignar un grupo etario específico en función de la edad.
Edad | Grupo Etario |
---|---|
20 | Mayor de edad |
15 | Adolescente |
10 | Menor de edad |
Sintaxis de la sentencia CASE
La sentencia CASE es una instrucción en lenguaje SQL que permite evaluar una condición y ejecutar diferentes acciones en función del resultado de esa evaluación.
La sintaxis básica de la sentencia CASE es la siguiente:
CASE WHEN condición THEN resultado [WHEN condición THEN resultado] ... [ELSE resultado] END
Donde:
- condición: Es la expresión que se evalúa para determinar qué acción realizar.
- resultado: Es el valor que se devuelve cuando se cumple la condición.
- ELSE: Es opcional y se utiliza para especificar un valor predeterminado en caso de que ninguna de las condiciones se cumplan.
La sentencia CASE puede ser utilizada en diversas partes de una consulta SQL, como en la cláusula SELECT, WHERE, FROM, etc.
Estructura básica de la sentencia CASE
La estructura básica de la sentencia CASE se compone de los siguientes elementos:
- CASE: Palabra clave que indica el inicio de la sentencia CASE.
- WHEN: Palabra clave que indica el inicio de una condición.
- condición: Es la expresión que se evalúa para determinar qué acción realizar.
- THEN: Palabra clave que indica el inicio del resultado que se devuelve cuando se cumple la condición.
- resultado: Es el valor que se devuelve cuando se cumple la condición.
- END: Palabra clave que indica el fin de la sentencia CASE.
Un ejemplo básico de la estructura de la sentencia CASE sería:
CASE WHEN edad > 18 THEN 'Mayor de edad' ELSE 'Menor de edad' END
En este ejemplo, la sentencia CASE evalúa la condición edad > 18.
Si la condición se cumple, devuelve el resultado 'Mayor de edad', de lo contrario, devuelve el resultado 'Menor de edad'.
Partes de la sentencia CASE: WHEN, THEN y ELSE
La sentencia CASE se compone de tres partes fundamentales:
WHEN
La parte WHEN de la sentencia CASE se utiliza para especificar la condición que se evalúa.
La sintaxis básica de la parte WHEN es:
WHEN condición THEN resultado
Donde condición es la expresión que se evalúa y resultado es el valor que se devuelve cuando se cumple la condición.
THEN
La parte THEN de la sentencia CASE se utiliza para especificar el resultado que se devuelve cuando se cumple la condición.
La sintaxis básica de la parte THEN es:
THEN resultado
Donde resultado es el valor que se devuelve cuando se cumple la condición.
ELSE
La parte ELSE de la sentencia CASE se utiliza para especificar el resultado que se devuelve cuando no se cumple ninguna de las condiciones.
La sintaxis básica de la parte ELSE es:
ELSE resultado
Donde resultado es el valor que se devuelve cuando no se cumple ninguna de las condiciones.
Un ejemplo de la utilización de la parte ELSE en la sentencia CASE sería:
CASE WHEN edad > 18 THEN 'Mayor de edad' ELSE 'Menor de edad' END
En este ejemplo, si la condición edad > 18 no se cumple, se devuelve el resultado 'Menor de edad'.
Es importante destacar que la parte ELSE es opcional y se puede omitir si no se requiere un valor predeterminado.
Ejemplos de uso de sentencias CASE en SQL
Las sentencias CASE en SQL son una herramienta poderosa para agregar lógica condicional a nuestras consultas y procedimientos almacenados.
A continuación, se presentan algunos ejemplos de uso de sentencias CASE en diferentes contextos.
Ejemplo 1: Actualizar un campo según una condición
Supongamos que queremos actualizar un campo en una tabla de empleados según su género.
Por ejemplo, si el género es masculino, queremos establecer el campo "saludo" como "Señor", y si el género es femenino, queremos establecer el campo "saludo" como "Señora".
UPDATE empleados SET saludo = CASE genero WHEN 'M' THEN 'Señor' WHEN 'F' THEN 'Señora' ELSE 'Desconocido' END;
En este ejemplo, la sentencia CASE evalúa el valor del campo "genero" y asigna el valor correspondiente al campo "saludo".
Nota: La cláusula ELSE es opcional, pero se recomienda incluirla para manejar cualquier caso no previsto.
Ejemplo 2: Devolver un valor según una condición
Supongamos que queremos crear una vista que muestre el nombre del empleado y un mensaje de bienvenida según su tipo de contrato.
CREATE VIEW vista_empleados AS SELECT nombre, CASE tipo_contrato WHEN 'Fijo' THEN 'Bienvenido(a) al equipo!' WHEN 'Temporal' THEN 'Gracias por unirse a nuestro equipo temporalmente.' ELSE 'Tipo de contrato desconocido.' END AS mensaje_bienvenida FROM empleados;
En este ejemplo, la sentencia CASE evalúa el valor del campo "tipo_contrato" y devuelve un mensaje de bienvenida correspondiente.
Ejemplo 3: Uso de la sentencia CASE en una instrucción UPDATE
Supongamos que queremos actualizar los salarios de los empleados según su antigüedad en la empresa.
UPDATE empleados SET salario = CASE WHEN antiguedad < 5 THEN salario * 1.05 WHEN antiguedad BETWEEN 5 AND 10 THEN salario * 1.10 WHEN antiguedad > 10 THEN salario * 1.15 ELSE salario END;
En este ejemplo, la sentencia CASE evalúa el valor del campo "antiguedad" y actualiza el salario según la condición correspondiente.
Las sentencias CASE en SQL permiten agregar lógica condicional a nuestras consultas y procedimientos almacenados, lo que nos permite tomar decisiones basadas en condiciones específicas.
Tipo de sentencia CASE | Descripción |
---|---|
Simple | Se utiliza para entrar en lógicas basadas en un valor literal. |
Buscada | Se utiliza para entrar en lógicas basadas en el valor de una expresión. |
Las sentencias CASE en SQL son una herramienta versátil y poderosa para agregar lógica condicional a nuestras consultas y procedimientos almacenados.
Uso de sentencias CASE en procedimientos almacenados
El uso de sentencias CASE en procedimientos almacenados es una práctica común en la programación de bases de datos.
Estas sentencias permiten evaluar condiciones y realizar acciones específicas en función de los resultados.
En un procedimiento almacenado, una sentencia CASE se utiliza para evaluar una condición y realizar una acción específica cuando se cumpla.
La estructura básica de una sentencia CASE en un procedimiento almacenado es la siguiente:
CASE WHEN condición THEN acción [WHEN condición THEN acción] ... ELSE acción_por_defecto END CASE;
Donde:
condición
es la expresión que se evalúa para determinar si se cumple o no.acción
es la instrucción que se ejecuta cuando se cumple la condición.acción_por_defecto
es la instrucción que se ejecuta cuando no se cumple ninguna de las condiciones previas.
En un procedimiento almacenado, se pueden utilizar sentencias CASE para realizar various tareas, como:
- Actualizar registros en una tabla según ciertas condiciones.
- Realizar operaciones matemáticas condicionales.
- Evaluar si un registro cumple ciertas condiciones antes de realizar una acción.
Por ejemplo, supongamos que queremos actualizar el precio de un producto en una tabla según su categoría.
Podemos utilizar una sentencia CASE para evaluar la categoría del producto y actualizar el precio en consecuencia:
UPDATE productos SET precio = CASE WHEN categoria = 'Electrónica' THEN precio * 1.1 WHEN categoria = 'Ropa' THEN precio * 1.05 ELSE precio END CASE;
En este ejemplo, se utiliza una sentencia CASE para evaluar la categoría del producto y actualizar el precio en consecuencia.
Si la categoría es "Electrónica", se aplica un aumento del 10% al precio.Si la categoría es "Ropa", se aplica un aumento del 5% al precio.
En caso de que la categoría no sea ninguna de las anteriores, el precio se mantiene sin cambios.
Ventajas de utilizar sentencias CASE en procedimientos almacenados
Las sentencias CASE ofrecen varias ventajas cuando se utilizan en procedimientos almacenados:
- Flexibilidad: Las sentencias CASE permiten evaluar varias condiciones y realizar acciones específicas en función de los resultados.
- Legibilidad: Las sentencias CASE hacen que el código sea más legible y fácil de entender, ya que permiten evaluar condiciones de manera clara y concisa.
- Eficiencia: Las sentencias CASE pueden reducir la complejidad del código y mejorar el rendimiento, ya que permiten evaluar condiciones y realizar acciones específicas en una sola instrucción.
Además, las sentencias CASE también ofrecen varias ventajas en términos de seguridad, ya que permiten evaluar condiciones y realizar acciones específicas en función de los resultados, lo que reduce el riesgo de errores y vulnerabilidades.
Ejemplo de uso de sentencias CASE en un procedimiento almacenado
Supongamos que queremos crear un procedimiento almacenado que actualice el estado de un pedido según su fecha de entrega.
Podemos utilizar una sentencia CASE para evaluar la fecha de entrega y actualizar el estado del pedido en consecuencia.
CREATE PROCEDURE sp_UpdatePedidoEstado @pedido_id INT AS BEGIN UPDATE pedidos SET estado = CASE WHEN fecha_entrega < GETDATE() THEN 'Entregado' WHEN fecha_entrega > GETDATE() AND fecha_entrega < DATEADD(DAY, 3, GETDATE()) THEN 'En camino' ELSE 'Pendiente' END CASE WHERE pedido_id = @pedido_id; END;
En este ejemplo, se utiliza una sentencia CASE para evaluar la fecha de entrega del pedido y actualizar el estado del pedido en consecuencia.
Si la fecha de entrega es anterior a la fecha actual, el estado del pedido se establece en "Entregado".
Si la fecha de entrega es posterior a la fecha actual pero anterior a 3 días desde la fecha actual, el estado del pedido se establece en "En camino".
En caso contrario, el estado del pedido se establece en "Pendiente".
Si quieres conocer otros artículos parecidos a CASE: Uso y Ejemplos en Procedimientos SQL puedes visitar la categoría Tecnología.
Entradas Relacionadas 👇👇