CHOOSE (Transact-SQL)
Retorna o item ao índice especificado de uma lista de valores no SQL Server 2012.
Convenções da sintaxe Transact-SQL
Sintaxe
CHOOSE ( index, val_1, val_2 [, val_n ] )
Argumentos
index
É uma expressão de inteiro que representa um índice de base 1 na lista dos itens que o seguem.Se o valor de índice fornecido tiver um tipo de dados numérico diferente de int, o valor será convertido implicitamente em um inteiro. Se o valor de índice exceder os limites da matriz de valores, CHOOSE retornará nulo.
val_1 … val_n
Lista de valores separados por vírgulas de qualquer tipo de dados.
Tipos de retorno
Retorna o tipo de dados com a precedência mais alta do conjunto de tipos transmitido à função. Para obter mais informações, consulte Precedência de tipo de dados (Transact-SQL).
Comentários
CHOOSE age como um índice em uma matriz, onde a matriz é composta pelos argumentos que acompanham o argumento de índice. O argumento de índice determina qual dos valores a seguir será retornado.
Exemplos
O exemplo a seguir retorna o terceiro item da lista de valores fornecida.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
Aqui está o conjunto de resultados.
Result
-------------
Developer
(1 row(s) affected)
O exemplo a seguir retorna uma cadeia de caracteres simples com base no valor da coluna ProductCategoryID.
USE AdventureWorks2012;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
Aqui está o conjunto de resultados.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
O exemplo a seguir retorna o trimestre em que um funcionário foi contratado. A função MONTH é usada para retornar o valor do mês da coluna 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);
Aqui está o conjunto de resultados.
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