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
相关产品推荐
相关产品推荐

