SQL运行报错data type mismatch in criterion expression如何排查修改
错误原因&修改方案
你遇到的data type mismatch in criterion expression(条件表达式数据类型不匹配)错误核心诱因是PercentageDiscount = 'NULL'的写法错误:
- 你写的
'NULL'是带单引号的字符串常量,而PercentageDiscount本身是数值类型字段,不同类型的字段直接对比直接触发类型不匹配报错 - SQL中判断空值不能用
=等号,必须用IS NULL关键字
另外还有2个可选优化/校验点:
- 你用的逗号分隔多表的老式关联写法可读性差,更推荐用标准JOIN语法写关联条件,避免漏写关联逻辑
- 如果你使用的是Access数据库,日期常量需要用
#包裹,其他如MySQL、SQL Server等数据库直接用单引号加YYYY-MM-DD格式的日期即可
修改后的查询语句
SELECT AVG(Price) FROM Book INNER JOIN OrderLine ON Book.ISBN = OrderLine.ISBN INNER JOIN [Order] ON [Order].OrderNo = OrderLine.OrderNo WHERE OrderDeliveryDate > '2016-05-05' AND PercentageDiscount IS NULL;
如果是Access数据库,将日期条件替换为OrderDeliveryDate > #2016-05-05#即可正常执行。
内容的提问来源于stack exchange,提问作者Hello_user
相关产品推荐
相关产品推荐

