CASE buscado frente a CASE simple
Dos formas de escribir CASE
CASE buscado frente a CASE simple es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
Dos formas de escribir CASE
SQL ofrece dos variantes de la expresión CASE: el CASE simple y el CASE buscado. Ambos devuelven un valor según ciertas condiciones, pero se diferencian en la forma de escribirlas.
Al finalizar esta lección, sabrá cuándo elegir cada forma y cómo evitar errores comunes al confundirlas.
CASE simple: la idea
Un CASE simple compara una expresión con una lista de valores. Piense en él como una tabla de búsqueda: elija una columna o un valor a la izquierda y, después, indique a qué equivale ese valor en cada rama WHEN.
Sintaxis: CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE default END
SELECT
product_name,
category_id,
CASE category_id
WHEN 1 THEN 'Electronics'
WHEN 2 THEN 'Clothing'
WHEN 3 THEN 'Books'
ELSE 'Other'
END AS category_name
FROM products;CASE simple en la práctica
Aquí, la expresión CASE se coloca justo después de la palabra clave y la columna status se compara con cada valor de WHEN mediante una igualdad. Observe que no debe escribir status = en las ramas WHEN: la comparación se sobreentiende.
SELECT
order_id,
status,
CASE status
WHEN 'pending' THEN 'Awaiting payment'
WHEN 'paid' THEN 'Payment received'
WHEN 'shipped' THEN 'On its way'
WHEN 'delivered' THEN 'Completed'
ELSE 'Unknown status'
END AS status_label
FROM orders;CASE buscado: la idea
Un CASE buscado no tiene ninguna expresión justo después de la palabra clave CASE. En su lugar, cada rama WHEN contiene una condición booleana completa. Esto lo hace mucho más flexible: puede combinar distintas columnas, comprobar rangos o llamar a funciones dentro de cada WHEN.
Sintaxis: CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE default END
SELECT
employee_name,
salary,
CASE
WHEN salary < 30000 THEN 'Entry Level'
WHEN salary < 60000 THEN 'Mid Level'
WHEN salary < 100000 THEN 'Senior'
ELSE 'Executive'
END AS salary_band
FROM employees;CASE buscado en la práctica
Como cada WHEN acepta cualquier expresión booleana, puede combinar varias columnas en una sola rama. La base de datos evalúa las cláusulas WHEN de arriba abajo y devuelve el resultado de la primera rama cuyo valor sea TRUE.
SELECT
product_name,
stock,
price,
CASE
WHEN stock = 0 THEN 'Out of stock'
WHEN stock < 10 AND price > 100 THEN 'Low stock — premium item'
WHEN stock < 10 THEN 'Low stock'
ELSE 'In stock'
END AS availability
FROM products;Diferencia estructural clave
La tabla siguiente resume la diferencia fundamental:
CASE simple: una expresión después de CASE; cada WHEN comprueba la igualdad con esa expresión.
CASE buscado: no hay ninguna expresión después de CASE; cada WHEN es una condición booleana independiente.
Como el CASE simple solo realiza comprobaciones de igualdad, no puede gestionar rangos, valores NULL ni condiciones que involucren varias columnas. Para cualquier caso que vaya más allá de una coincidencia directa de valores, use CASE buscado.
-- Simple CASE: equality only
SELECT CASE day_number
WHEN 1 THEN 'Monday'
WHEN 2 THEN 'Tuesday'
ELSE 'Other'
END AS day_name
FROM schedule;
-- Searched CASE: any condition
SELECT CASE
WHEN day_number BETWEEN 1 AND 5 THEN 'Weekday'
WHEN day_number IN (6, 7) THEN 'Weekend'
END AS day_type
FROM schedule;Gestión de NULL: por qué gana el CASE buscado
Un CASE simple usa = internamente, y NULL = NULL nunca es TRUE en SQL. Por eso, un CASE simple no puede encontrar coincidencias con una columna NULL. Un CASE buscado permite escribir WHEN column IS NULL THEN ..., lo que funciona correctamente.
-- Simple CASE: NULL branch never matches
SELECT CASE manager_id
WHEN NULL THEN 'No manager' -- this will NEVER fire
ELSE 'Has manager'
END
FROM employees;
-- Searched CASE: correct NULL check
SELECT CASE
WHEN manager_id IS NULL THEN 'No manager'
ELSE 'Has manager'
END AS manager_status
FROM employees;Combinar columnas en un CASE buscado
Una gran ventaja del CASE buscado es que cada rama WHEN puede hacer referencia a columnas completamente distintas o llamar a funciones. Esto permite expresar reglas de negocio complejas que un CASE simple no puede gestionar en absoluto.
SELECT
customer_name,
total_orders,
total_spent,
CASE
WHEN total_spent > 10000 AND total_orders > 20 THEN 'VIP'
WHEN total_spent > 5000 THEN 'Gold'
WHEN total_orders > 10 THEN 'Silver'
ELSE 'Standard'
END AS tier
FROM customers;Usar CASE en ORDER BY
Ambas formas de CASE pueden aparecer dentro de ORDER BY para crear un orden personalizado que no existe en los datos. Aquí, un CASE simple asigna números a los nombres de prioridad, de modo que las filas se ordenan según la prioridad de negocio y no alfabéticamente.
SELECT ticket_id, subject, priority
FROM support_tickets
ORDER BY
CASE priority
WHEN 'critical' THEN 1
WHEN 'high' THEN 2
WHEN 'medium' THEN 3
WHEN 'low' THEN 4
ELSE 5
END ASC;CASE dentro de funciones de agregación
Envolver un CASE buscado dentro de SUM o COUNT es un patrón clásico de agregación condicional, a veces denominado tabla dinámica. Permite obtener los totales de varias categorías en un solo recorrido, en lugar de ejecutar varias consultas.
SELECT
department,
COUNT(*) AS total_employees,
SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) AS female_count,
SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) AS male_count,
SUM(CASE WHEN salary > 70000 THEN salary ELSE 0 END) AS high_earner_payroll
FROM employees
GROUP BY department;Elegir la forma adecuada
Una regla práctica:
Use CASE simple cuando asigne una sola columna a un conjunto fijo de valores conocidos: es más corto y fácil de leer.
Use CASE buscado para todo lo demás: rangos, comprobaciones de NULL, lógica que involucre varias columnas o llamadas a funciones dentro de las condiciones.
En caso de duda, el CASE buscado siempre funciona. Incluso puede reescribir cualquier CASE simple como un CASE buscado, pero no al revés.
-- These two queries return identical results
-- Simple CASE (concise for equality)
SELECT CASE region_code
WHEN 'US' THEN 'United States'
WHEN 'UK' THEN 'United Kingdom'
ELSE 'International'
END AS region_name
FROM sales;
-- Equivalent Searched CASE
SELECT CASE
WHEN region_code = 'US' THEN 'United States'
WHEN region_code = 'UK' THEN 'United Kingdom'
ELSE 'International'
END AS region_name
FROM sales;Comprobación rápida
Compruebe su comprensión del CASE simple y el CASE buscado.
Repaso de la lección
Esto es lo que aprendió en esta lección:
CASE simple: coloque una expresión después de CASE; cada WHEN comprueba si esa expresión es igual a un valor específico. Es ideal para asignar una sola columna a una lista fija de etiquetas.
CASE buscado: no hay ninguna expresión después de CASE; cada WHEN contiene una condición booleana completa. Admite rangos, comprobaciones de NULL, lógica que involucre varias columnas y llamadas a funciones.
Ambas formas evalúan las ramas de arriba abajo y devuelven el resultado de la primera rama TRUE. Cuando ninguna rama coincide y no hay ELSE, el resultado es NULL. Para obtener la máxima flexibilidad, el CASE buscado siempre es una opción segura: puede hacer todo lo que hace el CASE simple y mucho más.
Aprende SQL con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 46
- Lecciones
- 183
Preguntas frecuentes
¿La lección «CASE buscado frente a CASE simple» es gratis?
Sí — el texto completo de «CASE buscado frente a CASE simple» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «CASE buscado frente a CASE simple»?
Dos formas de escribir CASE Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «CASE buscado frente a CASE simple»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- La expresión CASE
- CASE buscado frente a CASE simple
- Agrupación y etiquetado de datos
- CASE en ORDER BY y agregaciones