Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Die Funktion Transact-SQL CHOOSE gibt das Element im angegebenen Index aus einer Liste von Werten im Datenbank-Engine zurück.
Transact-SQL-Syntaxkonventionen
Syntax
CHOOSE ( index , val_1 , val_2 [ , val_n ] )
Argumente
Index
Ein ganzzahliger Ausdruck, der einen 1-basierten Index in der Liste der darauf folgenden Elemente darstellt.
Wenn der angegebene Indexwert einen anderen numerischen Datentyp als int hat, wird der Wert implizit in eine ganze Zahl umgewandelt. Überschreitet der Indexwert die Grenzen des Arrays von Werten, CHOOSE ergibt NULL.
val_1 ... val_n
Liste von kommagetrennten Werten beliebiges Datentyps.
Rückgabetypen
Gibt den Datentyp mit der höchsten Rangfolge aus dem Satz von Typen zurück, der an die Funktion übergeben wurde. Weitere Informationen finden Sie unter "Rangfolge des Datentyps".
Hinweise
CHOOSE wirkt wie ein Index in ein Array, wobei das Array aus den Argumenten besteht, die dem Indexargument folgen. Das Indexargument bestimmt, welcher der folgenden Werte CHOOSE zurückgegeben wird.
Explizit eine extrem große Anzahl von Werten (tausende Werte durch Kommas getrennt) in eine CHOOSE Klausel einzubeziehen, kann Ressourcen verbrauchen und folgenden Fehler zurückgeben:
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.
Beispiele
Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025, AdventureWorksDW2025, oder AdventureWorksLT2025 Beispieldatenbank, die Sie aus dem Azure Data SQL Samples Repository GitHub-Repository herunterladen können.
A. CHOOSE-Beispiel
Das folgende Beispiel gibt das dritte Element aus der Werteliste zurück.
SELECT CHOOSE(3, 'Manager', 'Director', 'Developer', 'Tester') AS Result;
Hier sehen Sie das Ergebnis.
Result
-------------
Developer
B. SELECT-Beispiel basierend auf der Spalte
Das folgende Beispiel liefert eine grundlegende Zeichenkette basierend auf dem Wert in der Spalte ProductCategoryID .
USE AdventureWorks2025;
GO
SELECT ProductCategoryID,
CHOOSE(ProductCategoryID, 'A', 'B', 'C', 'D', 'E') AS Expression1
FROM Production.ProductCategory;
Hier sehen Sie das Ergebnis.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
C. CHOSSE in Kombination mit MONTH
Das folgende Beispiel zeigt die Saison zurück, in der ein Produktmodell zuletzt modifiziert wurde. Die Funktion MONTH gibt den Monatswert aus der Spalte ModifiedDate zurück.
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 sehen Sie das Ergebnis.
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