CHOOSE
La función CHOOSE
en SQL Server es una función de ayuda que devuelve un elemento de una lista de valores basada en su posición de índice. Es útil cuando necesitas seleccionar un valor de una lista de opciones dependiendo de un índice numérico.
Sintaxis
CHOOSE ( index, val1, val2, ..., valN )
- index: Un número entero que especifica cuál de los valores seleccionar. Debe estar en el rango de 1 a N (donde N es el número de valores en la lista).
- val1, val2, …, valN: La lista de valores de la cual se seleccionará uno en función del índice.
Uso y Ejemplos
1. Seleccionar un valor simple
SELECT CHOOSE(2, 'Apple', 'Banana', 'Cherry') AS SelectedFruit;
Este ejemplo devuelve ‘Banana’ porque el índice es 2 y ‘Banana’ es el segundo valor en la lista.
2. Usar con columnas de una tabla
Puedes usar CHOOSE
para seleccionar valores de columnas en una tabla. Supongamos que tienes una tabla productos
con columnas id
, nombre
, y categoria
.
SELECT
id,
nombre,
categoria,
CHOOSE(2, 'Disponible', 'Agotado', 'En espera') AS Estado
FROM
productos;
Este ejemplo siempre devuelve ‘Agotado’ para cada fila porque el índice es 2.
3. Usar con valores calculados
Puedes combinar CHOOSE
con otras funciones o cálculos para determinar el índice dinámicamente.
SELECT
id,
nombre,
ventas,
CHOOSE(
CASE
WHEN ventas < 100 THEN 1
WHEN ventas BETWEEN 100 AND 500 THEN 2
ELSE 3
END,
'Bajo',
'Medio',
'Alto'
) AS NivelVentas
FROM
productos;
En este ejemplo, CHOOSE
devuelve ‘Bajo’, ‘Medio’, o ‘Alto’ basado en el valor de ventas
.
Ventajas y Usos
- Simplicidad:
CHOOSE
proporciona una forma simple y directa de seleccionar valores de una lista sin escribir múltiples condicionesCASE
. - Legibilidad: El código puede ser más legible y fácil de mantener en comparación con anidamientos complejos de
CASE
oIF
. - Flexibilidad: Es útil en escenarios donde tienes un conjunto fijo de resultados posibles y necesitas seleccionar uno basado en un índice.
Limitaciones
- Rango del índice: El índice debe estar en el rango de 1 a N, donde N es el número de valores en la lista. Si el índice está fuera de este rango, la función devuelve NULL.
- Número de valores: La función puede manejar hasta 254 valores. Si necesitas más, necesitarás usar otra lógica.
Ejemplo:
En el siguiente ejemplo se usa la función Month para extraer el mes de una fecha, para que de acuerdo al número de mes coloque el mes en letras, usaremos la función CHOOSE, agregando el listado de nombre de los meses en el orden correspondiente.
Resumen
La función CHOOSE
en SQL Server es una herramienta útil para seleccionar un valor de una lista basada en un índice. Simplifica el código y mejora la legibilidad cuando necesitas seleccionar entre varias opciones predefinidas. Es especialmente útil en reportes y transformaciones de datos donde se requiere una selección directa y sencilla de valores.