Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Endpoint de SQL Analytics no Microsoft Fabric
Armazém no Microsoft Fabric
Banco de Dados SQL no Microsoft Fabric
A CHOOSE função Transact-SQL retorna o item no índice especificado a partir de uma lista de valores no Mecanismo de Banco de Dados.
Convenções de sintaxe de Transact-SQL
Sintaxe
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Argumentos
index
Uma expressão inteira que representa um índice baseado em 1 na lista dos itens seguintes a ele.
Se o valor do índice fornecido tiver um tipo de dado numérico diferente de int, o valor é implicitamente convertido em um inteiro. Se o valor do índice exceder os limites do array de valores, CHOOSE retorna NULL.
val_1 ... val_n
Lista de valores separados por vírgulas de qualquer tipo de dado.
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.
Comentários
CHOOSE atua como um índice dentro de um array, onde o array é composto pelos argumentos que seguem o argumento do índice. O argumento índice determina qual dos seguintes valores CHOOSE retorna.
Incluir explicitamente um número extremamente grande de valores (milhares de valores separados por vírgulas) em uma CHOOSE cláusula pode consumir recursos e devolver o seguinte erro:
Msg 8631, Level 17, State 1, Line 1
Internal error: Server stack limit has been reached. Please look for potentially deep nesting in your query, and try to simplify it.
Exemplos
Os exemplos de código neste artigo usam o AdventureWorks2025, AdventureWorksDW2025, ou AdventureWorksLT2025 banco de dados de exemplo, que você pode baixar do repositório GitHub do Azure Data SQL Samples Repository.
a. Exemplo CHOOSE
O exemplo a seguir retorna o terceiro item da lista de valores.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Veja a seguir o conjunto de resultados.
Result
-------------
Developer
B. Exemplo CHOOSE baseado na coluna
O exemplo a seguir retorna uma string básica de caracteres baseada no valor na ProductCategoryID coluna.
USE AdventureWorks2025;
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
C. ESCOLHA em combinação com MÊS
O exemplo a seguir retorna à temporada em que um modelo de produto foi modificado pela última vez. A MONTH função retorna o valor do mês da ModifiedDate coluna.
USE AdventureWorksLT;
GO
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