MS Access查询使用*通配符无法返回Null值的技术求助
解决MS Access查询中LIKE通配符不包含Null行的问题
这问题我之前做Access查询时也踩过一模一样的坑!你遇到的核心问题是:在Access里,LIKE "*"是不会匹配Null值的——因为Null代表“未知”,和任何表达式做比较的结果都是“未知”,自然不会被筛选出来。给你几个简单有效的解决办法:
方法一:用布尔逻辑直接替代通配符
既然当条件为假时你需要返回所有行,那不如直接让Where子句在这种情况下返回True,完全避开通配符的坑:WHERE IIf(FormCondition, [Param] = [SpecificParam], True)这种写法更直观,当
FormCondition为真时精准匹配指定参数,为假时直接放行所有行(包括Param为Null的)。方法二:补充Null值的匹配条件
如果想保留原来的LIKE逻辑,可以额外加一个OR条件,专门处理Param为Null且条件为假的情况:WHERE [Param] LIKE IIf(FormCondition, [SpecificParam], "*") OR (NOT FormCondition AND [Param] IS NULL)这样当条件不满足时,既会匹配Param能和
*通配符匹配的非Null行,也会包含Param为Null的行。方法三:用Nz函数转换Null值
Access的Nz函数可以把Null值转换成你指定的默认值,比如空字符串。这样LIKE "*"就能匹配到转换后的空串,从而包含原来的Null行:WHERE Nz([Param], "") LIKE IIf(FormCondition, [SpecificParam], "*")这个方法改动最小,只需要给Param字段套一个Nz函数就行。
内容的提问来源于stack exchange,提问作者Dark_Eyes
相关产品推荐
相关产品推荐

