Comment effectuer un IF...THEN dans un SELECT SQL ?

Comment effectuer un IF…THEN dans un SELECT SQL ?

L’instruction CASE est ce qui se rapproche le plus du IF en SQL et est prise en charge dans toutes les versions de SQL Server.

SELECT CAST(
             CASE
                  WHEN Obsolete = 'N' or InStock = 'Y'
                     THEN 1
                  ELSE 0
             END AS bit) as Saleable, *
FROM Product

Vous n’avez besoin d’utiliser l’opérateur CAST que si vous souhaitez obtenir le résultat sous forme de valeur booléenne. Si un int vous convient, ceci fonctionne :

SELECT CASE
            WHEN Obsolete = 'N' or InStock = 'Y'
               THEN 1
               ELSE 0
       END as Saleable, *
FROM Product

Les instructions CASE peuvent être imbriquées dans d’autres instructions CASE et même incluses dans des agrégats.

SQL Server Denali (SQL Server 2012) ajoute l’instruction IIF qui est également disponible dans Access (signalé par Martin Smith) :

SELECT IIF(Obsolete = 'N' or InStock = 'Y', 1, 0) as Saleable, * FROM Product