[英]MS Access SQL - Error in query if result is “NULL”
我正在尝试在 MS Access SQL 中进行查询,但在字段中的 output 表中出现错误。
我的第一次尝试:
iif(ReceiptYesNo IS NOT NULL,
iif(left(FinancesMemo, 6)="ΙΕΠ //", 3, iif(ReceiptYesNo=1, 1, 2)),
iif(left(FinancesMemo, 6)="ΙΕΠ //", 3, "NULL")
)
AS receipt_id,
我的第二次尝试:
iif(left(FinancesMemo, 6)="ΙΕΠ //", 3, iif(ReceiptYesNo=1, 1, iif(ReceiptYesNo=2, 2, "NULL"))) as receipt_id,
如果结果不是“NULL”,则它正在工作。
如果我的结果是“NULL”,我在该字段中遇到错误。
如果我更改代码并输入“11”或“23”之类的其他内容,它就可以工作。
我怎样才能让它工作?
*** 更新 ***
看来我不能放文字,只能放数字。
***按照下面的答案(6月7日)后,我解决了我的问题***
iif(ReceiptYesNo IS NOT NULL,
iif(left(FinancesMemo, 6)="ΙΕΠ //", 3, iif(ReceiptYesNo=1, 1, 2)),
iif(left(FinancesMemo, 6)="ΙΕΠ //", 3, NULL)
) AS temp_receipt_id,
iif(temp_receipt_id is null,"NULL",temp_receipt_id) as receipt_id,
在我的测试中,当 ReceiptYesNo 为 Null 并且 FinancesMemo 没有“ΕΠ //”时,表达式错误。 立即 Window 中的以下表达式返回“N”: IIf(Null=1, 1, IIf(Null=2, 2, IIf(Null=3, 3, "N")))
因为 Null=anything 永远不会为真,所以返回错误参数。 查询不喜欢,因为在同一个 output 字段中混合了数字和文本。 返回的第一个值定义字段类型。 如果“Null”是第一个返回值,则数字将自动转换为字符串。
您的问题编辑中的结论是正确的。 要么将 1、2、3 作为字符串返回,要么使用 0 或 Null 而不是“Null”。
iif(left(FinancesMemo, 6)="ΙΕΠ //", "3", iif(ReceiptYesNo=1, "1", iif(ReceiptYesNo=2, "2", "NULL")))
或者
Switch(left(FinancesMemo, 6)="ΙΕΠ //","3", ReceiptYesNo=1,"1", ReceiptYesNo=2,"2", True,"NULL")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.