有没有办法让 NULL 表现得像 0(零)或 SQL 中的空字符串?

Tho*_*ann 3 sql sqlite

假设有一个带有整数列的 sqlite 数据库。

现在,整数字段往往也包含 NULL 值(=未设置)。

在对该字段进行查询时,我想将 NULL 值解释为零 (0)。

有没有办法告诉 sqlite 在这种情况下我喜欢像 0 一样处理 NULL,特别是当我使用 SELECT 语句进行比较时?

由于我在类似 C 的代码中动态构造查询,因此我希望能够编写如下内容:

query = "SELECT * FROM tbl WHERE intField=" + IntToStr(anIntValue)
Run Code Online (Sandbox Code Playgroud)

目前,我使用以下代码解决了这个问题,我想避免这样做:

if (anIntValue == 0) {
  query = "SELECT * FROM tbl WHERE intField IS NULL OR intField=0"
} else {
  query = "SELECT * FROM tbl WHERE intField=" + IntToStr(anIntValue)
}
Run Code Online (Sandbox Code Playgroud)

也许我可以在查询中使用一个运算符将 NULL 转换为我指定的其他值?

当然,另一种方法是确保该字段中永远不会出现 NULL 值,但人们可能希望能够知道该值何时尚未设置,所以我希望能够保留数据库中的 NULL 值。

dno*_*eth 6

在标准 SQL 中,这称为COALESCE

COALESCE(col, 0)
Run Code Online (Sandbox Code Playgroud)

如果有一个每个 DBMS 都支持的标准,为什么还要使用像 IFNULL/NVL 这样的专有扩展呢?