Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Azure SQL Managed Instance
Endpoint de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
A CHOOSE função Transact-SQL devolve o item no índice especificado a partir de uma lista de valores no Database Engine.
Transact-SQL convenções de sintaxe
Sintaxe
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Arguments
índice
Uma expressão inteira que representa um índice baseado em 1 na lista dos itens seguintes.
Se o valor do índice fornecido tiver um tipo de dado numérico diferente de int, o valor é implicitamente convertido num inteiro. Se o valor do índice exceder os limites do array de valores, CHOOSE devolve NULL.
val_1 ... val_n
Lista de valores separados por vírgulas de qualquer tipo de dado.
Tipos de devolução
Devolve o tipo de dado com a precedência mais alta do conjunto de tipos passados para a função. Para obter mais informações, consulte Precedência de tipo de dados.
Observações
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 valores seguintes CHOOSE retorna.
Incluir explicitamente um número extremamente grande de valores (milhares de valores separados por vírgulas) numa 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.
Examples
Os exemplos de código neste artigo utilizam a AdventureWorks2025, AdventureWorksDW2025, ou AdventureWorksLT2025 base de dados de exemplos, que pode descarregar do repositório GitHub do Azure Data SQL Samples Repository.
A. Exemplo CHOOSE
O exemplo seguinte devolve o terceiro item da lista de valores.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Aqui está o conjunto de resultados.
Result
-------------
Developer
B. Exemplo CHOOSE com base na coluna
O exemplo seguinte devolve uma cadeia 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;
Aqui está o conjunto de resultados.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. ESCOLHA em combinação com MÊS
O exemplo seguinte retorna à estação em que um modelo de produto foi modificado pela última vez. A MONTH função devolve 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;
Aqui está 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