CHOOSE (Transact-SQL)
Viene restituito l'elemento in corrispondenza dell'indice specificato di un elenco di valori in SQL Server 2012.
Convenzioni della 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 fornito è 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 ulteriori 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
Nell'esempio seguente viene restituito il terzo elemento dell'elenco di valori forniti.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
Set di risultati:
Result
-------------
Developer
(1 row(s) affected)
Nell'esempio seguente viene restituita una stringa di caratteri semplice in base al valore della colonna ProductCategoryID.
USE AdventureWorks2012;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
Set di risultati:
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
Nell'esempio seguente viene restituito il trimestre in cui un dipendente è stato assunto. La funzione MONTH viene utilizzata per restituire il valore del mese della colonna HireDate.
USE AdventureWorks2012;
GO
SELECT JobTitle, HireDate, CHOOSE(MONTH(HireDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',
'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Hired
FROM HumanResources.Employee
WHERE YEAR(HireDate) > 2005
ORDER BY YEAR(HireDate);
Set di risultati:
JobTitle HireDate Quarter_Hired
-------------------------------------------------- ---------- -------------
Sales Representative 2006-11-01 Autumn
European Sales Manager 2006-05-18 Spring
Sales Representative 2006-07-01 Summer
Sales Representative 2006-07-01 Summer
Sales Representative 2007-07-01 Summer
Pacific Sales Manager 2007-04-15 Spring
Sales Representative 2007-07-01 Summer