CHOOSE (Transact-SQL)

Devuelve el elemento en el índice especificado de una lista de valores de SQL Server 2012.

Icono de vínculo a temas 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

Vea también

Referencia

IIF (Transact-SQL)