SQL Server 2012 Come utilizzare la funzione logica CHOOSE ()

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.