Access中的查询表达式中缺少运算符

时间:2012-12-04 18:45:16

标签: c# ms-access

我在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

我哪里错了?

1 个答案:

答案 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