在 access 数据库中将 Null 转换为零
Posted
技术标签:
【中文标题】在 access 数据库中将 Null 转换为零【英文标题】:Convert Null to zero in access database 【发布时间】:2011-01-16 14:01:02 【问题描述】:考虑到 Grade.firstExam、Grade.secondExam、 和 Grade.finalExam 都是 TEXT 而不是数字,我无法得到将空值转换为零的确切解决方案。我已经尝试使用 NZ() 但它返回一条错误消息(表达式中的未定义函数“NZ”) 我使用带有 MS Access 的 VB.net 作为我的数据库。我还导入了 System.Data.OleDb 命名空间。
SQLStatement = " SELECT Student.idNumber as 'IDno', "
SQLStatement &= " Student.lastName + ', ' + Student.firstName as 'FullName', "
SQLStatement &= " Grade.firstExam as 'firstExam', "
SQLStatement &= " Grade.secondExam as 'secondExam', "
SQLStatement &= " Grade.finalExam as 'finalExam', "
SQLStatement &= " ((CDBL(Grade.firstExam) + CDBL(Grade.secondExam) + CDBL(Grade.finalExam) + CDBL(Grade.finalExam)) / 4) as 'Average' "
sqlstatement &= "FROM Student LEFT OUTER JOIN Grade ON "
sqlstatement &= " Student.idNumber = Grade.idNumber "
sqlstatement &= "WHERE Student.idNumber = '" & StudentID & "' "
SQLStatement &= "ORDER BY ((CDBL(Grade.firstExam) + CDBL(Grade.secondExam) + CDBL(Grade.finalExam) + CDBL(Grade.finalExam)) / 4) DESC"
如何转换字段中存在的空字符串或 null?
【问题讨论】:
【参考方案1】:在你的 SQL 中尝试这样的操作:
SQLStatement &= " IIf(IsNull(Grade.firstExam),'0',Grade.firstExam) as 'firstExam', "
【讨论】:
【参考方案2】:您收到此消息错误可能是因为您在 SQL 请求中使用了 VB 函数:
mysqlRequest = "SELECT ..., NZ(yourNumber,0), ..."
数据库引擎不理解NZ函数
你应该这样写下你的请求:
mySQLRequest = "SELECT ..., IIf([myField] Is Null,0,[myField]) as myField, ..."
【讨论】:
以上是关于在 access 数据库中将 Null 转换为零的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MS Access 2010 中将 ACCDB 转换为 MDB
在 python 3.8 中将 Access Logic 转换为 Pandas 的问题