Funciones control de flujo
Las funciones de control de flujo en SQL permiten tomar decisiones dentro de las consultas basándose en condiciones. Estas funciones son útiles para modificar los resultados dinámicamente, aplicar lógica condicional y manejar valores nulos.
1. CASE - Evaluación de Condiciones #
La función CASE permite evaluar múltiples condiciones y devolver diferentes resultados.
Ejemplo Básico: #
1SELECT nombre, salario, 2 CASE 3 WHEN salario > 50000 THEN 'Alto' 4 WHEN salario BETWEEN 30000 AND 50000 THEN 'Medio' 5 ELSE 'Bajo' 6 END AS categoria_salarial 7FROM empleados;
Esto clasifica los empleados según su salario.
Ejemplo con Comparación de Columnas: #
1SELECT nombre, salario, departamento, 2 CASE departamento 3 WHEN 'IT' THEN 'Tecnología' 4 WHEN 'HR' THEN 'Recursos Humanos' 5 ELSE 'Otros' 6 END AS departamento_nombre 7FROM empleados;
Este código cambia el nombre de los departamentos en la salida.
2. IF() - Condicional Simple (Solo en MySQL y sqlite) #
IF() permite evaluar una condición y devolver uno de dos valores.
Ejemplo: #
Esto devuelve 'Alto' si el salario es mayor a 50,000 y 'Bajo' en caso contrario.
3. COALESCE() - Manejo de Valores Nulos #
COALESCE() devuelve el primer valor no nulo de una lista de valores.
Ejemplo: #
1SELECT nombre, COALESCE(telefono, 'No especificado') AS telefono 2FROM empleados;
Si telefono es NULL, se devuelve 'No especificado'.
4. NULLIF() - Comparar y Devolver NULL #
NULLIF() devuelve NULL si dos valores son iguales; de lo contrario, devuelve el primer valor.
Ejemplo: #
1SELECT nombre, NULLIF(salario, 0) AS salario_valido 2FROM empleados;
Si salario es 0, se devuelve NULL; de lo contrario, se devuelve su valor original.
5. GREATEST() y LEAST() - Comparación de Valores (No disponible en SQLite) #
GREATEST(): Devuelve el valor más alto de una lista.LEAST(): Devuelve el valor más bajo de una lista.
Ejemplo: #
Esto compara edad y experiencia, devolviendo el mayor y menor valor, respectivamente.
Resumen del tema
Conceptos clave #
CASE WHEN: estructura estándar de evaluación condicional (simpleosearched) compatible con todos los motores SQL.- Condicional Directo (
IF/IIF): evaluación rápida de condición ternaria (disponible en MySQL, SQLite y SQL Server). - Manejo de Nulos con
COALESCE(): devuelve la primera expresión no nula de la lista, ideal para definir valores por defecto. NULLIF(): compara dos expresiones y devuelveNULLsi son iguales, útil para evitar errores de división por cero.GREATEST()yLEAST(): seleccionan el valor máximo o mínimo de una lista de argumentos (en motores que lo soportan).
Qué debes recordar #
CASE y COALESCE son estándar ANSI SQL y resultan esenciales para transformar datos dinámicamente y gestionar de forma robusta los valores NULL.