MS Access查询如何筛选两列非空有效邮箱并合并为单列输出
解决方法
报错原因
类型冲突报错的原因是MS Access中NULL值无法直接参与字符串匹配运算,当字段为NULL时执行NOT LIKE 'EMPTY'这类字符串对比操作会触发类型不匹配错误。
正确查询逻辑
你需要的过滤规则是排除两个字段均为无效值(NULL或'EMPTY')的行,保留至少有一个字段有效的行,可以用Access内置的Nz()函数把NULL值统一替换为'EMPTY'后再做判断,从根源避免类型冲突。
完整SQL语句如下:
SELECT IIf(Nz([Issued Email], 'EMPTY') <> 'EMPTY', [Issued Email], [Email]) AS [Filtered Email] FROM TableA WHERE Nz([Issued Email], 'EMPTY') <> 'EMPTY' OR Nz([Email], 'EMPTY') <> 'EMPTY'
逻辑说明
Nz([字段名], 'EMPTY'):将字段的NULL值统一替换为字符串'EMPTY',把两种无效值的判断逻辑合并,避免NULL参与字符串运算的问题- WHERE条件:只要两个字段中有一个不是'EMPTY'(即存在有效值)就保留该行
- SELECT子句中的
IIf判断:优先取[Issued Email]的有效值,[Issued Email]无效时取[Email]的有效值,合并输出为统一的邮箱列
内容的提问来源于stack exchange,提问作者SHA-256
相关产品推荐
相关产品推荐

