CASE: Uso y Ejemplos en Procedimientos SQL

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.

Índice
  1. Introducción a las sentencias CASE en SQL
  2. Tipo de sentencias CASE
  3. Sintaxis de la sentencia CASE
  4. Ejemplos de uso de sentencias CASE en SQL
  5. Uso de sentencias CASE en procedimientos almacenados

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.
Puedes leer:  Proceso Automático: 2 Formas de Gestión de Órdenes de Cliente

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.

EdadGrupo Etario
20Mayor de edad
15Adolescente
10Menor 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.

Puedes leer:  Escala logarítmica: comprensión y aplicación en análisis de datos.

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 CASEDescripción
SimpleSe utiliza para entrar en lógicas basadas en un valor literal.
BuscadaSe 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 👇👇

Go up