Considérez le null comme "inconnu" dans ce cas (ou "n'existe pas"). Dans l'un ou l'autre de ces cas, vous ne pouvez pas dire qu'ils sont égaux, car vous ne connaissez pas la valeur de l'un ou de l'autre. Ainsi, null=null est évalué comme non vrai (faux ou nul, selon votre système), car vous ne connaissez pas les valeurs pour dire qu'elles SONT égales. Ce comportement est défini dans la norme ANSI SQL-92.
EDIT :Cela dépend de votre paramètre ansi_nulls. si ANSI_NULLS est désactivé, cela sera évalué à 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'