Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Funkcja CHOOSE Transact-SQL zwraca element w określonym indeksie z listy wartości w Database Engine.
Transact-SQL konwencje składni
Składnia
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Arguments
indeks
Wyrażenie całkowitoliczbowe, które reprezentuje indeks oparty na 1 w liście elementów następujących po nim.
Jeśli podana wartość indeksu ma inny typ danych niż int, wartość ta jest domyślnie przeliczana na liczbę całkowitą. Jeśli wartość indeksu przekracza ograniczenia tablicy wartości, CHOOSE zwraca NULL.
val_1 ... val_n
Lista wartości oddzielonych przecinkami dowolnego typu danych.
Typy zwracane
Zwraca typ danych o najwyższym przykładzie spośród zestawu typów przekazanych funkcji. Aby uzyskać więcej informacji, zobacz Pierwszeństwo typu danych.
Uwagi
CHOOSE działa jak indeks w tablicy, gdzie tablica składa się z argumentów następujących po argumentze indeksowym. Argument indeksu określa, która z poniższych wartości CHOOSE zwraca się.
Jawne włączenie do klauzuli CHOOSE niezwykle dużej liczby wartości (tysiące wartości oddzielonych przecinkami) może zużyć zasoby i zwrócić następujący błąd:
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.
Przykłady
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorksDW2025, AdventureWorksLT2025 lub AdventureWorks2025, którą można pobrać z repozytorium GitHub Azure Data SQL Samples Repository.
A. WYBIERZ przykład
Poniższy przykład zwraca trzeci element z listy wartości.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Oto zestaw wyników.
Result
-------------
Developer
B. WYBIERZ przykład na podstawie kolumny
Poniższy przykład zwraca podstawowy ciąg znaków na podstawie wartości w kolumnie ProductCategoryID .
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Oto zestaw wyników.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. SELECT w połączeniu z MONTH
Poniższy przykład przywraca sezon, w którym model produktu był ostatnio modyfikowany. Funkcja MONTH zwraca wartość miesiąca z kolumny 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;
Oto zestaw wyników.
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