繁体   English   中英

MS Access SQL - 如果结果为“NULL”,则查询出错

[英]MS Access SQL - Error in query if result is “NULL”

我正在尝试在 MS Access SQL 中进行查询,但在字段中的 output 表中出现错误。

  • 我的 [ReceiptYesNo] 是表中 NULL, 1, 2 的编号。
  • 我的 [FinancesMemo] 是一个文本。

我的第一次尝试:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM