Articles

Comment utiliser la logique IF…THEN dans SQL Server

Posted on

SQL Server a la capacité unique de vous permettre d’exécuter une logique programmatique 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 retourné.

Utilisation de l’instruction CASE

Ceci est le plus facilement accompli dans toutes les versions de SQL Server en utilisant l’instruction CASE, qui agit comme une IF...THEN...ELSE expression logique et renvoie diverses valeurs en fonction du résultat.

Dans l’exemple ci-dessous, nous voulons retourner une colonne supplémentaire locale qui précise si notre livre se déroule en Terre du Milieu ou sur la vieille 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 l’aspect particulier CASE de cette déclaration, supprimons temporairement la CASE pour remarquer qu’il s’agit d’une déclaration SELECT extrêmement simple en surface :

SELECT books.*FROM books

En conséquence, examinons comment la section CASE 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 de initialiser l’instruction CASE puis de spécifier sous quelles conditions (WHEN) notre instruction CASE doit évaluer un résultat. Dans cet exemple, nous examinons les champs books.title et books.primary_author ; si l’un ou l’autre correspond à notre thème Tolkien-esque, THEN nous retournons la valeur  » Terre du Milieu « . Si aucun des deux champs ne correspond à notre recherche, nous retournons plutôt la valeur ‘Terre’.’

Pour réarranger la logique comme un psuedo-code IF...THEN...ELSE déclaration, 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’une déclaration CASE doit toujours être annexée à la fin avec une déclaration END correspondante. Dans l’exemple ci-dessus, nous renommons également la valeur résultante qui est renvoyée en locale, bien que cela 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 la très pratique fonction IIFIIF est une méthode raccourcie permettant d’exécuter une IF...ELSECASE instruction et de renvoyer l’une des deux valeurs, en fonction de l’évaluation du résultat.

Restructurer 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 une fonction IIF, nous remplaçons en grande partie le sucre syntaxique de l’instruction CASE par quelques simples séparateurs de virgule pour différencier nos arguments.

Tout compte fait, CASE et IIF font le même travail, mais si on a le choix, IIF sera généralement beaucoup plus simple à utiliser.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *