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.