我有一个搜索查询,该查询从文本框中返回值。我想添加功能以返回注释为空或为空的所有行。
我尝试编辑SQL以在文本框中接受“空白”,并返回注释为null的所有行。我只是将OR添加到代码的原始部分。
(((IIf(Nz([Forms]![Home]![CHOOSE_COMMENTS],"")="","",[WCL_DATABASE].[COMMENTS] Like [Forms]![Home]![CHOOSE_COMMENTS]))<>False)
或
((IIf(Nz([Forms]![Home]![CHOOSE_COMMENTS],"")="Blank","",[WCL_DATABASE].[COMMENTS] Like ""))<>False) )`
搜索“空白”时,没有任何结果。
答案 0 :(得分:1)
Null
和一个空字符串(""
)是两个不同的值。
我猜你会想要使用这样的东西:
select * from YourTable where
([Forms]![Home]![CHOOSE_COMMENTS] = "Blank" and [WCL_DATABASE].[COMMENTS] is null) or
([Forms]![Home]![CHOOSE_COMMENTS] is null) or
([WCL_DATABASE].[COMMENTS] like [Forms]![Home]![CHOOSE_COMMENTS])
这意味着:
答案 1 :(得分:0)
考虑在NZ
公式的两边使用LIKE
来匹配诸如 MISSING 之类的填充项。这将处理NULL
个案例。要处理空(仅零长度或仅包含空格的字符串),请在等式的一侧使用NZ
,因为没有值的表单控件都将呈现为NULL
。两种方法都可以避免IIF
调用。
以下应涵盖NULL
个案例,非缺失案例和空字符串案例。
WHERE NZ([WCL_DATABASE].[COMMENTS], 'MISSING')
LIKE '*' & NZ([Forms]![Home]![CHOOSE_COMMENTS], 'MISSING') & '*'
OR TRIM([WCL_DATABASE].[COMMENTS]) = NZ([Forms]![Home]![CHOOSE_COMMENTS], '')