在 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

为啥 C# 允许在浮点类型中将非零数除以零?

在 python 3.8 中将 Access Logic 转换为 Pandas 的问题

如何在 MS Access 的追加查询中将数据类型从文本转换为是/否?

如何在PostgreSQL中将空转换为null?

在 Access 中将列类型转换为长文本