Funções lógicas – CHOOSE (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

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

Convenções de sintaxe de 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, confira 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

a. Exemplo simples de ESCOLHA

O exemplo a seguir retorna o terceiro item da lista de valores fornecida.

SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;  

Veja a seguir o conjunto de resultados.

Result  
-------------  
Developer  
  
(1 row(s) affected)  

B. Exemplo simples de ESCOLHA com base na coluna

O exemplo a seguir retorna uma cadeia de caracteres simples com base no valor da coluna ProductCategoryID.

USE AdventureWorks2022;  
GO  
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1  
FROM Production.ProductCategory;  

Veja a seguir o conjunto de resultados.

ProductCategoryID Expression1  
----------------- -----------  
3                 C  
1                 A  
2                 B  
4                 D  
  
(4 row(s) affected)  
  

C. ESCOLHA em combinação com MÊS

O exemplo a seguir retorna a sazonalidade em que um modelo de produto foi modificado pela última vez. A função MONTH é usada para retornar o valor do mês da coluna ModifiedDate. A função CHOOSE é usada para atribuir uma sazonalidade do Hemisfério Norte. Este exemplo usa o banco de dados AdventureWorksLT, que pode ser instalado rapidamente como banco de dados de exemplo para um novo Banco de Dados SQL do Azure. Para obter mais informações, consulte os Bancos de dados de exemplo do AdventureWorks.

SELECT Name, ModifiedDate, 
CHOOSE(MONTH(ModifiedDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',   
                          'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Modified
FROM SalesLT.ProductModel AS PM
WHERE Name LIKE '%Frame%'
ORDER BY ModifiedDate;  

Veja a seguir o conjunto de resultados.

Name                        ModifiedDate            Quarter_Modified
--------------------------- ----------------------- ----------------
HL Road Frame               2002-05-02 00:00:00.000 Spring
HL Mountain Frame           2005-06-01 00:00:00.000 Summer
LL Road Frame               2005-06-01 00:00:00.000 Summer
ML Road Frame               2005-06-01 00:00:00.000 Summer
ML Road Frame-W             2006-06-01 00:00:00.000 Summer
ML Mountain Frame           2006-06-01 00:00:00.000 Summer
ML Mountain Frame-W         2006-06-01 00:00:00.000 Summer
LL Mountain Frame           2006-11-20 09:56:38.273 Autumn
HL Touring Frame            2009-05-16 16:34:28.980 Spring
LL Touring Frame            2009-05-16 16:34:28.980 Spring

(10 rows affected)

Próximas etapas