Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Endpoint SQL analytics dans Microsoft Fabric
Entrepôt dans Microsoft Fabric
Base de données SQL dans Microsoft Fabric
La CHOOSE fonction Transact-SQL renvoie l’élément à l’index spécifié à partir d’une liste de valeurs dans le Moteur de base de données.
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 la suivent.
Si la valeur d’indice fournie possède un type de données numérique autre que int, la valeur est implicitement convertie en entier. Si la valeur de l’indice dépasse les bornes du tableau de valeurs, CHOOSE donne NULL.
val_1 ... val_n
Liste des valeurs séparées par virgules de tout type de données.
Types de retour
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é du type de données.
Remarques
CHOOSE agit comme un index dans un tableau, où le tableau est composé des arguments qui suivent l’argument de l’index. L’argument index détermine laquelle des valeurs CHOOSE suivantes revient.
Inclure explicitement un nombre extrêmement important de valeurs (des milliers de valeurs séparées par des virgules) dans une CHOOSE clause peut consommer des ressources et retourner l’erreur suivante :
Msg 8631, Level 17, State 1, Line 1
Internal error: Server stack limit has been reached. Please look for potentially deep nesting in your query, and try to simplify it.
Exemples
Les exemples de code de cet article utilisent les bases de données d’exemple AdventureWorks2025, AdventureWorksDW2025 ou AdventureWorksLT2025, que vous pouvez télécharger à partir du dépôt GitHub Azure Data SQL Samples Repository.
R. Exemple CHOOSE
L’exemple suivant renvoie le troisième élément de la liste des valeurs.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Voici le jeu de résultats.
Result
-------------
Developer
B. Exemple CHOOSE basé sur la colonne
L’exemple suivant renvoie une chaîne de caractères de base basée sur la valeur dans la ProductCategoryID colonne.
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Voici le jeu de résultats.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. CHOOSE en association avec MONTH
L’exemple suivant renvoie la saison à laquelle un modèle de produit a été modifié pour la dernière fois. La MONTH fonction retourne la valeur du mois de la ModifiedDate colonne.
USE AdventureWorksLT;
GO
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;
Voici le jeu de résultats.
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