Condividi tramite


CHOOSE (Transact-SQL)

Viene restituito l'elemento in corrispondenza dell'indice specificato di un elenco di valori in SQL Server 2012.

Icona di collegamento a un argomento 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

Vedere anche

Riferimento

IIF (Transact-SQL)