[英]MS Access SQL 'Data type mismatch in criteria expression' due to null value filtered out in subquery
我在Access數據庫中有一個帶有短文本列的表,該文本列的格式為'0000','0000-00'或null。 我需要根據前四個數字進行查詢,並嘗試了以下操作:
SELECT *
FROM
(
SELECT *
FROM Table1
WHERE Field1 IS NOT NULL
)
WHERE Val(LEFT(Field1,4)) > 1002
該查詢返回“條件表達式中的數據類型不匹配”。 我幾乎可以肯定這是由空值引起的,因為在一個測試案例中,我可以通過從表的副本中刪除空值(即刪除記錄)來使查詢工作。
我還驗證了內部查詢僅返回Field1不為空的記錄。
在我看來,查詢引擎執行的順序可能不符合查詢中指定的順序? 還是我做錯了什么?
使用LIKE
:
SELECT *
FROM Table1
WHERE Field1 LIKE "1002*"
NULL
值幾乎無法通過所有比較,因此不需要單獨的NULL
比較。 子查詢是不必要的。
對於不平等,您應該只能夠使用字符串比較:
WHERE field1 > "1002"
這將匹配“ 1002-00”。 如果您不想這樣做,請使用LEFT()
:
WHERE LEFT(field1, 4) > "1002"
也可以:
SELECT *
FROM Table1
WHERE IIF(Field1 IS NULL, 0, Val(LEFT(Field1,4))) > 1002
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.