2

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

我哪里错了?

4

1 回答 1

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 值。我从这个链接得到了这个信息。
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
于 2012-12-04T19:12:45.250 回答