WHERE语句中的IF排除太多记录(Access)

时间:2017-02-09 14:15:59

标签: sql ms-access

我正在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语句中包含更多参数和更多条件的查询。

2 个答案:

答案 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);