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