Funzioni logiche - CHOOSE (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Viene restituito l'elemento in corrispondenza dell'indice specificato di un elenco di valori in SQL Server.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
CHOOSE ( index, val_1, val_2 [, val_n ] )
Argomenti
index
Espressione intera che rappresenta un indice in base 1 nell'elenco degli elementi che lo seguono.
Se il tipo di dati numerico del valore dell'indice specificato è diverso da int, il valore viene convertito in modo implicito in un tipo di dati integer. Se il valore di indice supera i limiti della matrice di valori, tramite CHOOSE viene restituito Null.
val_1...val_n
Elenco di valori delimitati da virgole di qualsiasi tipo di dati.
Tipi restituiti
Restituisce il tipo di dati con precedenza maggiore nel set di tipi passato alla funzione. Per altre informazioni, vedere Precedenza dei tipi di dati (Transact-SQL).
Osservazioni:
CHOOSE funziona come un indice in una matrice, dove la matrice è costituita dagli argomenti che seguono l'argomento dell'indice. L'argomento dell'indice determina quali tra i valori seguenti saranno restituiti.
Esempi
R. Esempio di CHOOSE semplice
Nell'esempio seguente viene restituito il terzo elemento dell'elenco di valori forniti.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
Il set di risultati è il seguente.
Result
-------------
Developer
(1 row(s) affected)
B. Esempio di CHOOSE semplice basato su una colonna
Nell'esempio seguente viene restituita una stringa di caratteri semplice in base al valore della colonna ProductCategoryID
.
USE AdventureWorks2022;
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
(4 row(s) affected)
C. CHOOSE in combinazione con MONTH
Nell'esempio seguente viene restituita la stagione in cui è stata apportata l'ultima modifica a un modello di prodotto. La funzione MONTH
viene utilizzata per restituire il valore del mese della colonna ModifiedDate
. La funzione CHOOSE
viene usata per assegnare una stagione dell'emisfero settentrionale. Questo esempio usa il database AdventureWorksLT
, installabile rapidamente come database di esempio per un nuovo database SQL di Azure. Per ulteriori informazioni, vedere Database di esempio 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;
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
(10 rows affected)