我正在WHERE声明中与IF斗争。 我的Access Query使用参数。只有在参数有值时才应执行WHERE语句,否则应忽略它。 这就是我现在所拥有的:
PARAMETERS varMachineID Text ( 25 );
SELECT RequestNumber
FROM Requests
WHERE ( MachineID=IIf([varMachineID]<>"",[varMachineID],MachineID) );
此声明应该可以正常工作。但是,该表还可以包含具有空白MachineID的记录。使用此WHERE语句,查询现在会排除这些记录。这不应该发生。 我在ELSE中尝试了一个OR语句,但后来查询变得太复杂而无法处理。
希望有人为我提供解决方案。
感谢。
PS。这是一个剥离的示例,我在WHERE语句中包含更多参数和更多条件的查询。
答案 0 :(得分:0)
我猜这是&#34;空白&#34;表示style="background-image:URL('/img/abc-1.jpg');"
。如果是这样,我想你想要:
NULL
当WHERE MachineID = varMachineID or varMachineID is NULL
为varMachineId
时,这将选择所有记录。当它不是NULL
时,它将仅选择匹配的那些。
答案 1 :(得分:0)
这可能是你需要的:
WHERE
MachineID Is Null Or
MachineID = IIf(varMachineID = "", MachineID, varMachineID);