SQL Server a la capacité unique de vous permettre d'exécuter une logique de programmation en temps réel sur les valeurs de votre requête. Sur la base de ces évaluations logiques, vous pouvez générer diverses valeurs dans le cadre de l'ensemble de données renvoyé.
Utilisation de l'instruction CASE
Ceci est plus facilement accompli dans toutes les versions de SQL Server en utilisant le CASE
instruction, qui agit comme un IF...THEN...ELSE
logique expression et renvoie diverses valeurs en fonction du résultat.
Dans cet exemple ci-dessous, nous voulons retourner un locale
supplémentaire colonne qui précise si notre livre se déroule en Terre du Milieu ou sur l'ancienne Terre ordinaire.
SELECT
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale,
books.*
FROM
books
Avant d'examiner le CASE
spécial aspect de cette déclaration, supprimons temporairement le CASE
pour remarquer qu'il s'agit d'un SELECT
extrêmement simple déclaration en surface :
SELECT
books.*
FROM
books
Par conséquent, examinons comment le CASE
section est structurée et quel comportement logique nous effectuons.
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
Pour commencer, nous initialisons le CASE
instruction puis précisez dans quelles conditions (WHEN
) notre CASE
l'instruction doit évaluer un résultat. Dans cet exemple, nous examinons le books.title
et books.primary_author
; si l'un ou l'autre correspond à notre thème Tolkien-esque, THEN
nous renvoyons la valeur "Terre du Milieu". Si aucun des champs ne correspond à notre recherche, nous renvoyons à la place la valeur de "Terre".
Pour réorganiser la logique en pseudo-code IF...THEN...ELSE
instruction, nous demandons simplement à SQL d'évaluer :
IF
title == 'The Hobbit' OR
primary_author == 'Tolkien'
THEN
RETURN 'Middle-earth'
ELSE
RETURN 'Earth'
END
Enfin, il est essentiel de se rappeler qu'un CASE
l'instruction doit toujours être ajoutée à la fin avec un END
correspondant déclaration. Dans l'exemple ci-dessus, nous renommons également la valeur résultante qui est renvoyée en locale
, bien que ce soit certainement facultatif.
Utilisation de la fonction IIF
Si vous utilisez une version plus moderne de SQL, il est utile de savoir que SQL Server 2012 a introduit le très pratique IIF
une fonction. IIF
est une méthode abrégée pour effectuer un IF...ELSE
/CASE
instruction et renvoyant l'une des deux valeurs, en fonction de l'évaluation du résultat.
Restructuration de notre exemple ci-dessus pour utiliser IIF
est assez simple.
SELECT
IIF(
books.title = 'The Hobbit' OR books.primary_author = 'Tolkien',
'Middle-earth',
'Earth')
AS locale,
books.*
FROM
books
Avec un IIF
fonction, nous remplaçons en grande partie le sucre syntaxique du CASE
déclaration avec quelques virgules simples pour différencier nos arguments.
Tout compte fait, les deux CASE
et IIF
faire le même travail, mais si vous avez le choix, IIF
sera généralement beaucoup plus simple à utiliser.