CHOOSE (Transact-SQL)

Retourne l'élément à l'index spécifié à partir d'une liste de valeurs dans SQL Server 2012.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

CHOOSE ( index, val_1, val_2 [, val_n ] )

Arguments

  • index
    Expression entière qui représente un index de base 1 dans la liste des éléments qui suit.

    Si la valeur d'index fournie a un type numérique autre que int, la valeur est implicitement convertie en un entier. Si la valeur d'index dépasse les limites du tableau de valeurs, CHOOSE renvoie la valeur null.

  • val_1 … val_n
    Liste de valeurs séparées par des virgules de tous les types de données.

Types des valeurs retournés

Retourne le type de données ayant la priorité la plus élevée à partir de l'ensemble de types transmis à la fonction. Pour plus d'informations, consultez Priorités des types de données (Transact-SQL).

Notes

CHOOSE agit comme un index dans un tableau, où le tableau est composé des arguments qui suivent l'argument d'index. L'argument d'index détermine, parmi les valeurs suivantes, celle qui sera retournée.

Exemples

L'exemple suivant retourne le troisième élément de la liste de valeurs fournie.

SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;

Voici l'ensemble des résultats.

Result
-------------
Developer

(1 row(s) affected)

L'exemple suivant retourne une chaîne de caractères simple en fonction de la valeur de la colonne ProductCategoryID.

USE AdventureWorks2012;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;

Voici l'ensemble des résultats.

ProductCategoryID Expression1
----------------- -----------
3                 C
1                 A
2                 B
4                 D

(4 row(s) affected)

L'exemple suivant retourne le trimestre au cours duquel l'employé a été embauché. La fonction MONTH est utilisée pour retourner la valeur de mois de la colonne 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); 

Voici l'ensemble des résultats.

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

Voir aussi

Référence

IIF (Transact-SQL)