Logiska funktioner - VÄLJ (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Returnerar objektet på det angivna indexet från en lista med värden i SQL Server.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

index

Är ett heltalsuttryck som representerar ett 1-baserat index i listan över posterna efter.

Om det angivna indexvärdet har en numerisk datatyp annan än int, omvandlas värdet implicit till ett heltal. Om indexvärdet överskrider gränserna för arrayen av värden, returnerar SELECT noll.

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 Data Type Precedence (Transact-SQL).

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 vilka av följande värden som returneras.

Examples

A. Enkelt exempel på VÄLJ

Följande exempel returnerar det tredje elementet från listan över värden som tillhandahålls.

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

Här är resultatet.

Result  
-------------  
Developer  
  
(1 row(s) affected)  

B. Enkelt SELECT-exempel baserat på kolumn

Följande exempel ger en enkel teckensträng baserad på värdet i kolumnen ProductCategoryID .

USE AdventureWorks2022;  
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  
  
(4 row(s) affected)  
  

C. VÄLJ i kombination med MÅNAD

Följande exempel visar den säsong då en produktmodell senast modifierades. Funktionen MONTH används för att returnera månadsvärdet från kolumnen ModifiedDate. Funktionen CHOOSE används för att tilldela en säsong på norra halvklotet. Detta exempel använder databasen AdventureWorksLT , som snabbt kan installeras som exempeldatabas för en ny Azure SQL-databas. Mer information finns i AdventureWorks-exempeldatabaser.

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

(10 rows affected)

Nästa steg