Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Microsoft Fabric
Funktionen CHOOSE Transact-SQL returnerar objektet vid det angivna indexet från en lista med värden i Database Engine.
Transact-SQL syntaxkonventioner
Syntax
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Arguments
index
Ett heltalsuttryck som representerar ett 1-baserat index i listan över posterna efter det.
Om det angivna indexvärdet har en numerisk datatyp annan än int, konverteras värdet implicit till ett heltal. Om indexvärdet överskrider gränserna för matrisen av värden, CHOOSE returnerar NULL.
val_1 ... val_n
Lista över kommaseparerade värden av valfri datatyp.
Returtyper
Returnerar datatypen med högst prioritet från mängden av typer som skickats till funktionen. Mer information finns i Datatypspriorence.
Anmärkningar
CHOOSE fungerar som ett index i en array, där arrayen består av de argument som följer indexargumentet. Indexargumentet avgör vilket av följande värden CHOOSE som returnerar.
Att explicit inkludera ett extremt stort antal värden (tusentals värden separerade av kommatecken) i en CHOOSE klausul kan förbruka resurser och returnera följande fel:
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.
Examples
Kodexemplen i denna artikel använder AdventureWorks2025, AdventureWorksDW2025, eller AdventureWorksLT2025 exempeldatabasen, som du kan ladda ner från Azure Data SQL Samples Repository GitHub-arkivet.
A. VÄLJ exempel
Följande exempel returnerar det tredje elementet från listan med värden.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Här är resultatet.
Result
-------------
Developer
B. SELECT-exempel baserat på kolumn
Följande exempel returnerar en grundläggande teckensträng baserad på värdet i kolumnen ProductCategoryID .
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Här är resultatet.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. VÄLJ i kombination med MÅNAD
Följande exempel återger säsongen då en produktmodell senast modifierades. Funktionen MONTH returnerar månadsvärdet från kolumnen ModifiedDate .
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;
Här är resultatet.
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