Access SQL 2010中Coalesce()、Nz()函数失效,求替代方案
解决Nz()/Coalesce()处理空值无效的问题
先排查以下几个常见原因,对应解决方法:
字段不是真正的NULL值
Nz()和Coalesce()仅对NULL生效,如果字段存储的是空字符串('')或空格,这两个函数不会触发替换。先验证字段实际内容:SELECT delay_head, LEN(delay_head) FROM sumb WHERE dep_reg = 'er'如果结果中长度为0,说明是空字符串,需要先将其转为NULL再处理:
SELECT Nz(IIF(delay_head = '', NULL, delay_head), 0) FROM sumb WHERE dep_reg = 'er'字段类型不匹配
如果delay_head是字符串类型,即使为空值,Nz()返回的0会是字符串格式。若需要数值类型结果,先转换字段类型再处理:SELECT Nz(CDbl(delay_head), 0) FROM sumb WHERE dep_reg = 'er'数据库函数兼容性问题
Nz()是Access专属函数,如果使用的是SQL Server、MySQL等其他数据库,需改用对应函数:- SQL Server:使用
ISNULL()或COALESCE()SELECT ISNULL(delay_head, 0) FROM sumb WHERE dep_reg = 'er' - MySQL:使用
IFNULL()或COALESCE()SELECT IFNULL(delay_head, 0) FROM sumb WHERE dep_reg = 'er'
- SQL Server:使用
内容的提问来源于stack exchange,提问作者Iocc Reports
相关产品推荐
相关产品推荐

