Dans SQL server si vous avez nullParam=NULL
dans une clause where, il prend toujours la valeur false. C'est contre-intuitif et m'a fait beaucoup d'erreurs. Je ne comprends l' IS NULL
et IS NOT NULL
mots-clés sont la bonne façon de le faire. Mais pourquoi SQL server se comporter de cette façon?
Réponses
Trop de publicités?Pensez à la valeur null comme "inconnu" dans ce cas (ou "n'existe pas"). Dans chacun de ces cas, vous ne pouvez pas dire qu'ils sont égaux, parce que vous ne connaissez pas la valeur de l'un d'eux. Donc, null=null renvoie pas true (false ou null, selon votre système), parce que vous ne connaissez pas les valeurs à dire qu'ils SONT égaux. Ce comportement est défini dans la norme ANSI SQL-92.
EDIT: Cela dépend de votre ansi_nulls réglage. si vous avez ANSI_NULLS éteint, cela PERMETTRA d'évaluer la valeur true. Exécutez le code suivant pour un exemple...
set ansi_nulls off
if null = null
print 'true'
else
print 'false'
set ansi_nulls ON
if null = null
print 'true'
else
print 'false'