簡體   English   中英

MS Access SQL'條件表達式中的數據類型不匹配',因為在子查詢中濾除了空值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM