その場合、nullは「不明」(または「存在しない」)と考えてください。どちらの場合も、どちらの値もわからないため、等しいとは言えません。したがって、null =nullはtrueではないと評価されます(システムに応じてfalseまたはnull)。これは、値が等しいと言う値がわからないためです。この動作は、ANSISQL-92規格で定義されています。
編集:これは、ansi_nullsの設定によって異なります。 ANSI_NULLSがオフの場合、これはtrueと評価されます。例として次のコードを実行します...
set ansi_nulls off
if null = null
print 'true'
else
print 'false'
set ansi_nulls ON
if null = null
print 'true'
else
print 'false'