Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
Endpoint di analisi SQL in Microsoft Fabric
Warehouse in Microsoft Fabric
Database SQL in Microsoft Fabric
La CHOOSE funzione Transact-SQL restituisce l'elemento all'indice specificato da una lista di valori nel motore di database.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Argomenti
index
Un'espressione intera che rappresenta un indice basato su 1 nell'elenco degli elementi che lo seguono.
Se il valore dell'indice fornito ha un tipo di dato numerico diverso da int, il valore viene implicitamente convertito in un intero. Se il valore dell'indice supera i limiti dell'array di valori, CHOOSE restituisce NULL.
val_1 ... val_n
Elenco dei valori separati da virgole di qualsiasi tipo di dato.
Tipi restituiti
Restituisce il tipo di dati con precedenza maggiore nel set di tipi passato alla funzione. Per altre informazioni, vedere Precedenza del tipo di dati.
Osservazioni:
CHOOSE agisce come un indice in un array, dove l'array è composto dagli argomenti che seguono l'argomento dell'indice. L'argomento dell'indice determina quale dei seguenti valori CHOOSE restituisce.
Includere esplicitamente un numero estremamente elevato di valori (migliaia di valori separati da virgole) in una CHOOSE clausola può consumare risorse e restituire il seguente errore:
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.
Esempi
Gli esempi di codice in questo articolo utilizzano il AdventureWorks2025, AdventureWorksDW2025, o AdventureWorksLT2025 database di esempi, che puoi scaricare dal repository GitHub Azure Data SQL Samples Repository.
R. Esempio CHOOSE
Il seguente esempio restituisce il terzo elemento dalla lista dei valori.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Il set di risultati è il seguente.
Result
-------------
Developer
B. Esempio CHOOSE basato sulla colonna
Il seguente esempio restituisce una stringa di caratteri di base basata sul valore nella ProductCategoryID colonna.
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Il set di risultati è il seguente.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. CHOOSE in combinazione con MONTH
Il seguente esempio riporta la stagione in cui un modello di prodotto è stato modificato l'ultima volta. La MONTH funzione restituisce il valore del mese dalla ModifiedDate colonna.
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;
Il set di risultati è il seguente.
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