SQL Server 2012 a introduit la nouvelle fonction puissante CHOOSE (). Cette recette technique explorera son utilisation et ses erreurs communes à travers quelques exemples simples.
La fonction CHOOSE () renvoie l'élément à un index spécifié. Le comportement est identique à la liste des éléments du tableau et utilise l'index du tableau pour obtenir l'élément à l'index spécifié.
Syntaxe
Syntaxe: CHOISIR (index, val_1, val_2 [, val_n])
• Indice L'argument accepte une expression entière et doit commencer par un index basé sur 1.
• Val_1 à val_n liste d'objets.
Exemples
Exemple 1.1 - CHOISISSEZ () avec index
SÉLECTIONNER CHOISIR (0, 'tech', 'recettes', 'livre de recettes') AS 'index_as_0' GO index_as_0 ---------- NULL
Cela indique NULL car CHOOSE () accepte les arguments d'index et doit commencer par un ou une valeur supérieure à un.
Exemple 1.2 - CHOISIR () avec une valeur d'index valide
CHOISISSEZ LE CHOIX (1, 'tech', 'recettes', 'livre de recettes') en tant que 'index_as_1' GO index_as_1 ---------- tech
Cela renvoie l'élément 'tech' comme résultat de la liste de valeurs, car nous en avons passé un comme argument d'index.
Exemple 1.3 - CHOISISSEZ () avec un index supérieur au nombre d'éléments de la liste
SÉLECTIONNEZ CHOISISSEZ (4, 'tech', 'recettes', 'livre de recettes') en tant que 'index_as_4' GO index_as_4 ---------- NULL
Cela retourne NULL car nous passons l'argument d'index en tant que quatre et nous n'avons aucun élément à la quatrième position.
Exemple 1.4 - CHOISISSEZ () avec index décimal
CHOISISSEZ LE CHOIX (2.9, 'tech', 'recettes', 'livre de recettes') en tant que 'decimal_index' GO decimal_index ------------- recettes
Cela ne renvoie aucune erreur. Il montre "recettes" dans le résultat. Lorsque vous transmettez le premier argument en tant que 2.9, il convertit une valeur décimale en entier, traite la valeur décimale 2.9 en tant que 2 et affiche l'élément 'recettes' comme résultat.
Exemple 1.5 CHOISIR () avec index négatif
SÉLECTIONNEZ CHOISISSEZ (-2, 'tech', 'recettes', 'livre de recettes') sous le nom 'Negative_index' GO Negative_index -------------- NULL
Cela se traduit par NULL parce que vous passez le premier argument en tant que valeur négative qui viole la syntaxe. Assurez-vous toujours de toujours passer la valeur entière positive.
Exemple 1.6 CHOISIR () avec variable
DECLARE @index AS INT = 3 CHOISISSEZ LE CHOIX (@index, 'tech', 'recettes', 'livre de recettes') en tant que 'index_as_variable' GO index_as_variable ----------------- livre de recettes
Nous avons déclaré une variable int @index avec la valeur trois et avons transmis la variable en tant que valeur d'index. Il affiche 'cookbook' car il s'agit du troisième élément d'index de la liste.