我在Ms-Access中有一个返回布尔值的查询。但是在执行时会显示“查询表达式中缺少运算符”
SELECT case when exists(select due_amt from PaymentDetails where iss_id=20 and user_id=1 and ten_no=1) then cast(1 as bit) else cast(2 as bit) end
我哪里错了?
答案 0 :(得分:1)
您需要在IIf语句中编写 Case When 语句。此查询返回一个布尔值。
SELECT IIf(Nz(due_amt,0) <> 0,True,False) as blndue from PaymentDetails where iss_id=20 and user_id=1 and ten_no=1
编辑:
我认为 Is Null 功能可能比Nz更强大。这是重写
SELECT IIf(IIf(due_amt Is Null,0,due_amt) <> 0,True,False) as blndue from PaymentDetails where iss_id=20 and user_id=1 and ten_no=1
编辑2:
ADO有一个Null值的特例。您可以使用“= Null”条件测试Null值。我从这个链接得到了这个信息
http://www.techrepublic.com/article/10-tricks-for-handling-null-values-in-microsoft-access/6125114
这应该是最后的重写...
SELECT IIf(IIf(due_amt = Null,0,due_amt) <> 0,True,False) as blndue from PaymentDetails where iss_id=20 and user_id=1 and ten_no=1