我试图在MS Access SQL中进行查询,但在字段中的输出表中出现错误。
- my[ReckeiptYesNo]是表中带有NULL、1、2的数字
- 我的[财务表情]是一条短信
我的第一次尝试:
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,
如果结果不是"0";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没有"¦Βπ//"。立即窗口中的以下表达式返回"0";N〃:IIf(Null=1, 1, IIf(Null=2, 2, IIf(Null=3, 3, "N")))
,因为Null=任何东西都不可能为true,所以返回False参数。查询不喜欢,因为在同一个输出字段中混合了数字和文本。返回的第一个值定义字段类型。如果";Null";若返回第一个值,那个么数字将自动转换为字符串。
问题编辑中的结论是正确的。要么将1、2、3作为字符串返回,要么使用0或Null代替"0";空";。
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")