在代碼中,我正在維護,我看到我們得到一個數據視圖,然後申請一個RowFilter,它例如:ISNULL()中的RowFilter不一樣,在SQL
dv.RowFilter = "IsNull(LOAN_STATUS, 'NULL') = 'NULL'";
這將返回所有記錄與LOAN_STATUS在數據庫中爲NULL。
我想我會的條件轉移到SQL和等價的WHERE子句補充說:
WHERE [Other existing conditions] AND IsNull(LOAN_STATUS, 'NULL') = 'NULL'
然而,我的SQL這段時間沒回我什麼。它將與
WHERE [Other existing conditions] AND LOAN_STATUS IS NULL
我做了一些更多的測試工作:使用的RowFilter ,兩者產生相同的記錄有效ISNULL()是一樣的IS NULL
dv.RowFilter = "IsNull(LOAN_STATUS, 'NULL') = 'NULL'";
VS
dv.RowFilter = "LOAN_STATUS IS NULL";
但是,嚴格使用SQL,第一個沒有返回記錄
WHERE [Other existing conditions] AND IsNull(LOAN_STATUS, 'NULL') = 'NULL'
VS
WHERE [Other existing conditions] AND LOAN_STATUS IS NULL
誰能告訴我,如果是正常的,給我解釋一下它背後的原因何在呢?
我明白ISNULL()函數中的替換與直接檢查字段是否爲NULL。我不明白爲什麼它在RowFilter中的行爲相同 - 使用任何一種方法有效地返回所有帶NULL值的記錄......而在SQL WHERE中,同時使用ISNULL()和IS NULL的行爲不一樣? – Gotcha