Variable locale Transact-SQL avec instruction case

Étant donné cet exemple simple:

DECLARE @aux INT SET @aux = NULL SELECT CASE WHEN @aux = NULL THEN 'null' ELSE 'not null' END AS ETest, CASE WHEN @aux <> NULL THEN 'not null' ELSE 'null' END AS ITest; 

Je m'attendais à un résultat: ETEST nul, ITEST NULL, apparemment c'est faux, et j'ai besoin d'un indice pour find où ma logique échoue.

Vous ne pouvez pas utiliser les opérateurs comme <> et = pour vérifier null valeurs null . Vous devez utiliser IS NULL ou IS NOT NULL comme ci-dessous

 DECLARE @aux INT SET @aux = NULL SELECT CASE WHEN @aux IS NULL THEN 'null' ELSE 'not null' END AS ETest, CASE WHEN @aux IS NOT NULL THEN 'not null' ELSE 'null' END AS ITest;