You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询报错:条件上下文指定非布尔类型表达式(ASP.NET MVC)

解决SQL查询中的"An expression of non-boolean type specified..."错误

你的报错完全是因为WHERE子句里的条件写法不规范导致的。在SQL中,WHERE子句的每个条件都必须是布尔表达式(要么是true要么是false),而你直接写了DropDate,数据库无法理解这个字段本身要表达什么判断逻辑——它不知道你是要判断它为空、不为空还是等于某个值。

按照你的需求:筛选PickDate不为空、DropDate为空且OutDate为空的记录,你需要把WHERE子句里的DropDate改成DropDate IS NULL。

修正后的完整查询语句如下:

Select rm.RoomID,rm.RoomNo,rd.CheckIn,rd.CheckOut,ity.ItemTypeName,ln.ReservationID,g.GuestID,g.GuestName,ln.LaundryID,it.ItemName,ln.PickDate,ln.ServiceKind,ln.DropQty,ln.DropDate 
from Laundry ln 
inner join Items it on ln.ItemId = it.ItemId 
inner join ItemTypes ity on ity.ItemTypeId = it.ItemTypeId 
inner join Rooms rm on ln.RoomID = rm.RoomID 
left join Reservation_Guest rg on rg.ReservationID = ln.ReservationID 
left join ReservationDetails rd on rd.ReservationID = ln.ReservationID 
left join Guests g on g.GuestID = rg.GuestID 
where PickDate is not null 
  and DropDate is null 
  and OutDate is null

简单总结下:

  • 所有判断字段是否为空的条件,都要明确使用IS NULL(为空)或IS NOT NULL(不为空)
  • 避免在WHERE子句里直接写字段名,除非该字段本身是布尔类型(比如bit字段)

内容的提问来源于stack exchange,提问作者kunals

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:20:06