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)

Passaggi successivi