2015-06-09 18 views
0

我有這段代碼:訪問SQL:不等同於空文本字段

UPDATE NewMaster SET NewMaster.[Risk Mitigation Status] = "Pending Audit/Assist" 
WHERE (NOT (NewMaster.[Risk Mitigation Status] = "Complete")); 

這將更新所有行「完成」,除「待審覈/協助」(預期)和空值(對我來說,完全出乎意料!)與運營商相同。我只需要添加OR IS NULL?這對我來說毫無意義!

+1

NULL不是「完整的」,所以我認爲這是有道理的。你只需要添加OR IS NULL。 –

回答

0

NULL就像那樣棘手。您必須明確地測試或以其他方式轉義它們。試圖比較,轉換或以其他方式將它們與任何非空值一起使用幾乎總是會破壞某些東西。

我沒有使用Access SQL進行練習,但是基於this documentation,它看起來像在Access SQL中轉義它們的正確函數是'Nz'。如:

WHERE (NOT (Nz(NewMaster.[Risk Mitigation Status],"0") = "Complete")); 

在將它們與字符串「完成」進行比較之前,它將用值「0」替換找到的任何空值。