Tema SQL
IIF() (SQL Server)
Condicional de dos ramas (IIF(cond, si, no)). Misma idea que IF() en MySQL; para más opciones usa CASE estándar.
Descripción
IIF ( condición , verdadero , falso ) evalúa la condición una vez por fila. Es azúcar sintáctico sobre CASE (no es más corto en plan que un CASE bien escrito). Ambas ramas deben ser compatibles en tipo o el motor aplicará conversiones. Para muchas ramas encadenadas, CASE es más claro. IIF existe desde SQL Server 2012. En MySQL IF(cond, a, b) es el equivalente directo; en código portable usa CASE estándar.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
IIF(condición, valor_si_verdadero, valor_si_falso)
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Dos ramas
- Para más opciones usa CASE o CHOOSE con mapeo numérico.
- MySQL
- IF() con la misma firma lógica.
- Tipos
- Evita mezclar tipos incompatibles entre ramas.
Ejemplos
Ejemplo 1
SELECT nombre,
IIF(edad >= 18, N'Adulto', N'Menor') AS tipo
FROM personas;
SELECT IIF(stock > 0, precio, NULL) AS precio_visible
FROM productos;
Ejemplo 2
SELECT IIF(total > 1000, N'VIP', N'estándar') AS segmento
FROM facturas;
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.