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 ] )
Observação
Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.
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;
Este é 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;
Este é 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;
Este é 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)