Compartilhar via


CHOOSE (Transact-SQL)

Retorna o item ao índice especificado de uma lista de valores no SQL Server 2012.

Ícone de vínculo de tópico 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

Consulte também

Referência

IIF (Transact-SQL)