Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance
Azure SQLKoncový bod analýzy SQL v Microsoft Fabric
Sklad v Microsoft Fabric
Databáze SQL v Microsoft Fabric
Funkce CHOOSE Transact-SQL vrací položku na zadaném indexu ze seznamu hodnot v Database Engine.
Syntaxe
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Arguments
index
Celočíselný výraz, který reprezentuje index založený na jedničce do seznamu následujících položek.
Pokud má daná hodnota indexu číselný datový typ jiný než int, hodnota je implicitně převedena na celé číslo. Pokud hodnota indexu překročí hranice pole hodnot CHOOSE , vrátí NULL.
val_1 ... val_n
Seznam hodnot oddělených čárkami libovolného datového typu.
Návratové typy
Vrátí datový typ s nejvyšší předností z množiny typů předaných funkci. Další informace naleznete v tématu Priorita datového typu.
Poznámky
CHOOSE funguje jako index do pole, kde pole je složeno z argumentů následujících po indexovém argumentu. Index argument určuje, která z následujících hodnot CHOOSE se vrátí.
Explicitní zahrnutí extrémně velkého počtu hodnot (tisíce hodnot oddělených čárkami) do klauzule CHOOSE může spotřebovat zdroje a vrátit následující chybu:
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
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorksDW2025, AdventureWorksLT2025 nebo AdventureWorks2025, kterou si můžete stáhnout z úložiště GitHub Azure Data SQL Samples Repository.
A. VYBERTE příklad
Následující příklad vrací třetí položku ze seznamu hodnot.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Tady je soubor výsledků.
Result
-------------
Developer
B. VYBERTE příklad podle sloupce
Následující příklad vrací základní znakový řetězec založený na hodnotě ve sloupci ProductCategoryID .
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Tady je soubor výsledků.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. SELECT v kombinaci s MONTH
Následující příklad vrací období, kdy byl model produktu naposledy upraven. Funkce MONTH vrací hodnotu měsíce ze sloupce 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;
Tady je soubor výsledků.
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