如何在SQL查询拼接中同时包含选定值与NULL值?
多类别过滤时同时包含选定值与NULL的SQL拼接问题解决方法
你的问题核心是逻辑运算符优先级错误加上字符串拼接冗余,导致筛选逻辑不符合预期:
- AND的优先级高于OR,原写法会被数据库解析为
(原查询条件 AND Color Is Null) OR Color='选定值',这使得Color为选定值的记录不受原查询条件约束,同时还因重复拼接query导致SQL语句混乱。
修正后的代码如下:
If Nz(colorFilter, "-") <> "All" Then query = query & " AND (Color Is Null OR Color=" & Chr(34) & Me.colorFilter & Chr(34) & ")" End If
关键说明:
- 用括号将
Color Is Null OR Color='选定值'包裹,让这两个条件作为一个整体与原查询条件通过AND关联,确保最终筛选出满足原查询条件,且Color为选定值或NULL的记录。 - 移除了末尾多余的
query拼接,避免SQL语句出现重复逻辑或语法错误。
内容的提问来源于stack exchange,提问作者piximi
相关产品推荐
相关产品推荐

