In SQL Server 2012 wurde die leistungsstarke neue Funktion CHOOSE () eingeführt. Dieses Technikrezept wird seine Verwendung und häufige Fehler anhand einiger einfacher Beispiele untersuchen.
Die Funktion CHOOSE () gibt das Element an einem angegebenen Index zurück. Das Verhalten entspricht der Liste der Elemente im Array und verwendet den Arrayindex, um das Element am angegebenen Index abzurufen.
Syntax
Syntax: CHOOSE (Index, Wert_1, Wert_2 [, Wert_n])
• Index Das Argument akzeptiert einen ganzzahligen Ausdruck und muss mit dem 1-basierten Index beginnen.
• Val_1 bis Val_n Liste von Gegenständen.
Beispiele
Beispiel 1.1 - CHOOSE () mit Index
SELECT CHOOSE (0, 'Tech', 'Rezepte', 'Kochbuch') AS 'index_as_0' GO index_as_0 ---------- NULL
Dies zeigt NULL an, da CHOOSE () Indexargumente akzeptiert und mit einem oder einem Wert größer als Eins beginnen muss.
Beispiel 1.2 - CHOOSE () mit gültigem Indexwert
SELECT CHOOSE (1, 'Tech', 'Rezepte', 'Kochbuch') AS 'index_as_1' GO index_as_1 ---------- tech
Dies gibt das "Tech" -Element als Ergebnis aus der Werteliste zurück, da wir eines als Indexargument übergeben haben.
Beispiel 1.3 - CHOOSE () mit einem Index, der größer als die Anzahl der Elemente in der Liste ist
SELECT CHOOSE (4, 'Tech', 'Rezepte', 'Kochbuch') AS 'index_as_4' GO index_as_4 ---------- NULL
Dies gibt NULL zurück, da wir das Indexargument als vier übergeben und sich an vierter Stelle kein Element befindet.
Beispiel 1.4 - CHOOSE () mit Dezimalindex
SELECT CHOOSE (2.9, 'Tech', 'Rezepte', 'Kochbuch') AS 'decimal_index' GO decimal_index ------------- Rezepte
Dies gibt keinen Fehler zurück. Es zeigt "Rezepte" im Ergebnis. Wenn Sie das erste Argument als 2.9 übergeben, wandelt es einen Dezimalwert in eine Ganzzahl um, behandelt den Dezimalwert 2.9 als 2 und zeigt als Ergebnis das Element 'Rezepte'.
Beispiel 1.5 CHOOSE () mit negativem Index
SELECT CHOOSE (-2, 'Tech', 'Rezepte', 'Kochbuch') AS 'Negative_index' GO Negative_index -------------- NULL
Dies führt zu NULL, da Sie das erste Argument als negativen Wert übergeben, der die Syntax verletzt. Stellen Sie immer sicher, dass Sie immer den positiven ganzzahligen Wert übergeben.
Beispiel 1.6 CHOOSE () mit Variable
DECLARE @index AS INT = 3 SELECT CHOOSE (@index, 'tech', 'recipes', 'cookbook') AS 'Index_as_Variable' GO Index_as_Variable ----------------- Kochbuch
Wir haben eine int-Variable @index mit dem Wert drei deklariert und die Variable als Indexwert übergeben. Es zeigt "Kochbuch" an, da es das dritte Indexelement in der Liste ist.