SQL Server 2012 Verwenden der logischen Funktion CHOOSE ()

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.