CHOOSE (Transact-SQL)
Gibt das Element am angegebenen Index aus einer Werteliste in SQL Server zurück.
Transact-SQL-Syntaxkonventionen
Gilt für: SQL Server (SQL Server 2012 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Syntax
CHOOSE ( index, val_1, val_2 [, val_n ] )
Argumente
index
Dies ist ein ganzzahliger Ausdruck, der einen auf 1 basierenden Index in der nachfolgenden Elementliste darstellt.Wenn der angegebene Indexwert einen anderen numerischen Datentyp als int hat, wird der Wert implizit in eine ganze Zahl konvertiert. Wenn der Indexwert die Grenzen des Wertarrays überschreitet, gibt CHOOSE Null zurück.
val_1 … val_n
Liste von durch Trennzeichen getrennte Werten eines beliebigen 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 der Datentypen (Transact-SQL).
Hinweise
CHOOSE hat die gleiche Funktion wie ein Index in einem Array, wobei das Array aus den Argumenten besteht, die dem Indexargument folgen. Das Indexargument bestimmt, welcher der folgenden Werte zurückgegeben wird.
Beispiele
Im folgenden Beispiel wird das dritte Element aus der Liste der Werte zurückgegeben, die angegeben wurde.
SELECT CHOOSE ( 3, 'Manager', 'Director', 'Developer', 'Tester' ) AS Result;
Dies ist das Resultset.
Result
-------------
Developer
(1 row(s) affected)
Im folgenden Beispiel wird eine einfache Zeichenfolge basierend auf dem Wert in der Spalte ProductCategoryID zurückgegeben.
USE AdventureWorks2012;
GO
SELECT ProductCategoryID, CHOOSE (ProductCategoryID, 'A','B','C','D','E') AS Expression1
FROM Production.ProductCategory;
Dies ist das Resultset.
ProductCategoryID Expression1
----------------- -----------
3 C
1 A
2 B
4 D
(4 row(s) affected)
Im folgenden Beispiel wird das Quartal zurückgegeben, in dem ein Mitarbeiter eingestellt wurde. Die MONTH-Funktion wird verwendet, um den Monatswert aus der Spalte HireDate zurückzugeben.
USE AdventureWorks2012;
GO
SELECT JobTitle, HireDate, CHOOSE(MONTH(HireDate),'Winter','Winter', 'Spring','Spring','Spring','Summer','Summer',
'Summer','Autumn','Autumn','Autumn','Winter') AS Quarter_Hired
FROM HumanResources.Employee
WHERE YEAR(HireDate) > 2005
ORDER BY YEAR(HireDate);
Dies ist das Resultset.
JobTitle HireDate Quarter_Hired
-------------------------------------------------- ---------- -------------
Sales Representative 2006-11-01 Autumn
European Sales Manager 2006-05-18 Spring
Sales Representative 2006-07-01 Summer
Sales Representative 2006-07-01 Summer
Sales Representative 2007-07-01 Summer
Pacific Sales Manager 2007-04-15 Spring
Sales Representative 2007-07-01 Summer