Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric
De CHOOSE Transact-SQL functie geeft het item terug op de opgegeven index uit een lijst met waarden in de Database Engine.
Transact-SQL syntaxis-conventies
Syntaxis
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Arguments
index
Een gehele expressie die een 1-gebaseerde index vertegenwoordigt in de lijst van de volgende items.
Als de gegeven indexwaarde een numeriek datatype heeft dat anders is dan int, wordt de waarde impliciet omgezet naar een geheel getal. Als de indexwaarde de grenzen van de array van waarden overschrijdt, CHOOSE geeft NULL.
val_1 ... val_n
Lijst van komma-gescheiden waarden van elk datatype.
Retourtypen
Geeft het datatype met de hoogste prioriteit terug uit de set types die aan de functie zijn doorgegeven. Zie Prioriteit van gegevenstypevoor meer informatie.
Opmerkingen
CHOOSE werkt als een index in een array, waarbij de array bestaat uit de argumenten die volgen op het indexargument. Het indexargument bepaalt welke van de volgende waarden CHOOSE teruggeeft.
Het expliciet opnemen van een extreem groot aantal waarden (duizenden waarden gescheiden door komma's) in een CHOOSE clausule kan middelen verbruiken en de volgende fout teruggeven:
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.
Voorbeelden
De codevoorbeelden in dit artikel gebruiken de AdventureWorks2025, AdventureWorksDW2025, of AdventureWorksLT2025 voorbeelddatabase, die je kunt downloaden van de Azure Data SQL Samples Repository GitHub-repository.
Eén. CHOOSE-voorbeeld
Het volgende voorbeeld geeft het derde item uit de lijst met waarden terug.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Hier is het resultatenoverzicht.
Result
-------------
Developer
B. SELECT-voorbeeld gebaseerd op kolom
Het volgende voorbeeld geeft een basistekenreeks terug op basis van de waarde in de ProductCategoryID kolom.
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Hier is het resultatenoverzicht.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. KIES in combinatie met MAAND
Het volgende voorbeeld geeft het seizoen terug waarin een productmodel voor het laatst werd aangepast. De MONTH functie geeft de maandwaarde uit de ModifiedDate kolom terug.
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;
Hier is het resultatenoverzicht.
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