SQL Server 2012 ha introdotto la potente nuova funzione CHOOSE (). Questa tecnica-ricetta esplorerà il suo uso e gli errori comuni attraverso alcuni semplici esempi.
La funzione CHOOSE () restituisce l'elemento in un indice specificato. Il comportamento è identico all'elenco di elementi nella matrice e utilizza l'indice della matrice per ottenere l'elemento all'indice specificato.
Sintassi
Sintassi: SCEGLI (indice, val_1, val_2 [, val_n])
• Indice l'argomento accetta l'espressione intera e deve iniziare con un indice basato su 1.
• Val_1 per val_n elenco di articoli.
Esempi
Esempio 1.1 - SCEGLI () con indice
SELEZIONA SCEGLI (0, 'tech', 'ricette', 'ricettario') AS 'index_as_0' GO index_as_0 ---------- NULL
Ciò mostra NULL perché CHOOSE () accetta gli argomenti di indice e deve iniziare con uno o un valore maggiore di uno.
Esempio 1.2 - SCEGLI () con valore di indice valido
SELEZIONA SCEGLI (1, 'tecnologia', 'ricette', 'ricettario') AS 'index_as_1' GO index_as_1 ---------- tech
Ciò restituisce la voce "tech" come risultato dalla lista valori perché ne abbiamo passato uno come argomento indice.
Esempio 1.3 - SCEGLIERE () con indice maggiore del numero di elementi nell'elenco
SELEZIONA SCEGLI (4, 'tecnologia', 'ricette', 'ricettario') AS 'index_as_4' GO index_as_4 ---------- NULL
Questo restituisce NULL perché stiamo passando l'argomento indice come quattro e non abbiamo alcun elemento nella quarta posizione.
Esempio 1.4 - SCEGLIERE () con indice decimale
SELEZIONA SCEGLI (2.9, 'tecnologia', 'ricette', 'ricettario') AS 'decimal_index' GO decimal_index ------------- ricette
Questo non restituisce alcun errore. Mostra "ricette" nel risultato. Quando si passa il primo argomento come 2.9, converte un valore decimale in un numero intero, considera il valore decimale 2.9 come 2 e mostra l'elemento "ricette" come risultato.
Esempio 1.5 SCEGLIERE () con indice negativo
SELEZIONA SCEGLI (-2, 'tecnologia', 'ricette', 'ricettario') AS 'Negative_index' GO Negative_index -------------- NULL
Questo risulta in NULL perché stai passando il primo argomento come valore negativo che viola la sintassi. Assicurati sempre di passare sempre il valore intero positivo.
Esempio 1.6 SCEGLIERE () con variabile
DICHIARARE @index AS INT = 3 SELEZIONA SCEGLI (@index, 'tech', 'ricette', 'ricettario') AS 'Index_as_Variable' GO Indice_as_Variable ----------------- ricettario
Abbiamo dichiarato una variabile int @index con valore tre e abbiamo passato la variabile come valore di indice. Sta mostrando 'ricettario' perché è il terzo elemento dell'indice nell'elenco.