CHOOSE (Transact-SQL)
Devuelve el elemento en el índice especificado de una lista de valores de SQL Server 2012.
Convenciones de sintaxis de Transact-SQL
Sintaxis
CHOOSE ( index, val_1, val_2 [, val_n ] )
Argumentos
index
Expresión entera que representa un índice de base uno de la lista de elementos que le siguen.Si el valor de índice proporcionado tiene un tipo de datos numérico distinto de int, el valor se convierte implícitamente en un entero. Si el valor de índice supera los límites de la matriz de valores, CHOOSE devuelve NULL.
val_1 … val_n
Lista de valores separados por comas de cualquier tipo de datos.
Tipos de valor devuelto
Devuelve el tipo de datos con la mayor prioridad del conjunto de tipos pasados a la función. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).
Comentarios
CHOOSE actúa como un índice de una matriz, donde la matriz consta de los argumentos que siguen al argumento de índice. El argumento de índice determina cuál de los valores siguientes se devolverá.
Ejemplos
En el ejemplo siguiente se devuelve el tercer elemento de la lista de valores que se proporciona.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
El conjunto de resultados es el siguiente.
Result
-------------
Developer
(1 row(s) affected)
En el ejemplo siguiente se devuelve una cadena de caracteres simple basada en el valor de la columna ProductCategoryID.
USE AdventureWorks2012;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
El conjunto de resultados es el siguiente.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
En el ejemplo siguiente se devuelve el trimestre en el que se contrató a un empleado. La función MONTH se usa para devolver el valor de mes de la columna HireDate.
USE AdventureWorks2012;
GO
SELECT JobTitle, HireDate, CHOOSE(MONTH(HireDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',
'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Hired
FROM HumanResources.Employee
WHERE YEAR(HireDate) > 2005
ORDER BY YEAR(HireDate);
El conjunto de resultados es el siguiente.
JobTitle HireDate Quarter_Hired
-------------------------------------------------- ---------- -------------
Sales Representative 2006-11-01 Autumn
European Sales Manager 2006-05-18 Spring
Sales Representative 2006-07-01 Summer
Sales Representative 2006-07-01 Summer
Sales Representative 2007-07-01 Summer
Pacific Sales Manager 2007-04-15 Spring
Sales Representative 2007-07-01 Summer