1

我有一个数据库,其中有一个表格记录车辆最后一次加油的时间。它有一个整数类型的日期列。

我需要能够确定最后的燃料更新日期。我在用:

Cursor cursor = db.query(FUEL_USE_TABLE_NAME, LAST_FUEL_UP_DATE_CLAUSE,
            REGISTRATION_NO_COLUMN + "=? ", new String[]{registrationNumber}, 
            null, null, null);

where LAST_FUEL_UP_DATE_CLAUSEis MAX(date_time), wheredate_time是相关列的名称。

当表中有条目时,这很好用,但是在编写单元测试时,我希望当表中没有条目时光标的行数为零,但是我得到了一个值为零的单行。即列中的最大值date_time为零,而实际上没有值。

我很高兴对此进行编码(用于0表示没有记录而不是-1),但想知道这是否是预期的行为,或者我做错了什么。

4

1 回答 1

1

这似乎是预期的行为。

在此处查看 SQLite 文档

具体来说,它说:

最大(X)

max() 聚合函数返回组中所有值的最大值。最大值是在同一列的 ORDER BY 中最后返回的值。当且仅当组中没有非 NULL 值时,聚合 max() 才返回 NULL。

于 2012-06-21T12:38:15.687 回答