MS ACCESS 2016 - 使用Null查询的标准

时间:2017-01-31 10:17:37

标签: sql ms-access

请帮助,我坚持以下问题: 我在MS access 2016中有一个包含以下数据的表:

字段 空值 空值 空值 21 21 空

我的目标是在我的标准为21时返回等于21的记录,但如果我的标准是例如22或不在字段中的任何其他数字,我想只返回空记录 - 我已经尝试过IIF( [Field] = 21,21,Null)如果标准是21,则可以正常工作,但不返回记录IIF([Field] = 22,22,Null)

我怀疑嵌套的IIF语句可能有所帮助,但到目前为止没有运气到那里

非常感谢任何帮助

3 个答案:

答案 0 :(得分:0)

Where子句应为:

WHERE Field = [Criteria] or (IsNull(Field) And Not Exists (select * from Table where Field = [Criteria])=True)

答案 1 :(得分:0)

你的问题似乎是(Field = Null)不等于(Field is Null),因此它不能用在IIf子句中,你需要一个额外的条件来获得空值。我在MS Access sql编辑器中使用以下SQL代码实现了所需的结果,但是当我选择设计器视图时,如果您不介意,它会在两个条件条件下“拆分”。试试看它是否适合你

Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&%\\&language\\$#_]*)?$

答案 2 :(得分:0)

感谢所有人的帮助,我认为“不退出(选择......)”会正常工作但是还有许多其他标准应用于表中的其他字段,因此第二个选择语句会变得太大(对我而言) !) - 但我的解决方案是以下

因为我使用SQL where子句作为VBA中调用的记录集的条件,我使用dcount函数来查看条件= 21是否在数据集中,然后使用if语句调用基于的一个查询[Filed] = 21而另一个如果[Field]为null - 不性感但效果很好

抱歉格式化和所有拼写错误 - 我的第一篇帖子