SQL Server 2012 introducerade den kraftfulla nya CHOOSE () -funktionen. Detta tekniska recept kommer att undersöka användningen och vanliga misstag genom några enkla exempel.
Funktionen VÄLJ () returnerar objektet till ett angivet index. Beteendet är detsamma som listan över objekt i array och använder arrayindex för att få objektet på angivet index.
Syntax
Syntax: VÄLJ (index, val_1, val_2 [, val_n])
• Index argument accepterar heltal uttryck, och det måste börja med 1-baserade index.
• Val_1 till val_n Lista av föremål.
exempel
Exempel 1.1 - CHOOSE () med index
VÄLJ VÄLJ (0, 'tech', 'recept', 'cookbook') AS 'index_as_0' GO index_as_0 ---------- NULL
Detta visar NULL eftersom VÄLJ () accepterar indexargument och måste börja med ett eller ett värde som är större än ett.
Exempel 1.2 - VÄLJ () med giltigt indexvärde
VÄLJ VÄLJ (1, 'tech', 'recept', 'cookbook') AS 'index_as_1' GO index_as_1 ---------- tech
Detta returnerar "tech" -objektet som resultat från värdeslistan eftersom vi har passerat ett som indexargument.
Exempel 1.3 - VÄLJ () med index större än antal objekt i listan
VÄLJ VÄLJ (4, 'tech', 'recept', 'cookbook') AS 'index_as_4' GO index_as_4 ---------- NULL
Detta returnerar NULL eftersom vi passerar indexargument som fyra, och vi har inga objekt i fjärde positionen.
Exempel 1.4 - VÄLJ () med decimalindex
VÄLJ VÄLJ (2,9, 'tech', 'recept', 'cookbook') AS 'decimal_index' GO decimal_index ------------- recept
Detta returnerar inte något fel. Det visar "recept" i resultat. När du passerar det första argumentet som 2.9 omvandlar det ett decimalvärde till ett heltal, behandlar decimaltalet 2.9 som 2 och visar resultatet "recept" som resultat.
Exempel 1.5 VÄLJ () med negativt index
VÄLJ VÄLJ (-2, 'tech', 'recept', 'cookbook') AS 'Negative_index' GO Negative_index -------------- NULL
Detta resulterar i NULL eftersom du passerar det första argumentet som ett negativt värde som bryter mot syntaxen. Se alltid till att du alltid passerar det positiva heltalet.
Exempel 1.6 VÄLJ () med variabel
DECLARE @index AS INT = 3 VÄLJ VÄLJ (@index, 'tech', 'recept', 'cookbook') AS 'Index_as_Variable' GO Index_as_Variable ----------------- cookbook
Vi har förklarat en int variabel @ index med värde tre och har passerat variabeln som indexvärde. Det visar "cookbook" eftersom det är det tredje indexet i listan.