Bien le bonjour !
Et bien voilà, nous venons de tomber sur un résultat un peu étrange en parlant de syntaxe d'un case.. je m'explique. J'ai toujours mis ma syntaxe comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
SELECT CASE maValeur
          WHEN 'x' THEN 0
                   ELSE 1
           END
Et jusqu'ici, je n'avais jamais eu de problème. Mais on vient de me poser un erreur assez flagrante sur une même syntaxe

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
SELECT CASE maValeur
          WHEN NULL THEN 0
                    ELSE 1
           END
et là, le retour est à 0, même si ma valeur est null

Alors, vous allez me dire "il existe la fonction ISNULL(maValeur, 0)" et je vous répondrais oui, mais la question était de devoir mettre 0 ou 1 quelque soit la valeur de "maValeur" ce qui fait que le ISNULL() n'est pas approprié.

Alors si je fais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SELECT CASE
         WHEN  maValeur IS NULL
           THEN 1
           ELSE 0
          END
dans ce cas, le retour est bien 1 en cas de valeur null.. et c'est là ou ça tilt dans mon cerveau, parce que je ne comprend pas pourquoi l'une est interprétée et donne le bon résultat, mais pas l'autre pourquoi dans le premier cas, tout fonctionne, mais pas dans le 2ème...

Je comptais sur vos lumières pour m'éclairer, parce que ça tilt sévère

Cordialement.