在SQL Server 2008,我運行下面的SQL:爲什麼在SQL語句中匹配NULL的isnull(<field>,0)?
SELECT id, old_tgt_price, new_tgt_price
FROM inst i
WHERE inst_id IN (281, 229)
AND is_latest = 1
結果如下:
id old_tgt_price new_tgt_price
4492 462 NULL
4487 2700 2500
沒有錯在那裏。如果我添加一個檢查,新的舊的,價格不相等(同時預期一些值是NULL):
SELECT id, old_tgt_price, new_tgt_price
FROM inst i
WHERE inst_id IN (281, 229)
AND is_latest = 1
AND (isnull(old_tgt_price, 0) != isnull(new_tgt_price, 0))
我得到相同的結果。對於ID爲4492的記錄,當然AND(isnull(old_tgt_price,0)!= isnull(new_tgt_price,0))子句應該失敗。
爲什麼記錄4492仍在第二個結果集中返回?
哦,當然。衛生署!謝謝。這是我休假兩週後的第一天... – Ryan