SQLite忽略min函数的空值

时间:2018-02-05 09:57:52

标签: sqlite null min

我刚注意到以下查询:

select min(null,0);

返回null,而我期望获得0 ...(max函数相同)

在文档中,如果仅比较空值,则min()将返回null。有人可以解释我如何忽略空值,以便在与空值进行比较时获得真正的价值吗?

2 个答案:

答案 0 :(得分:1)

用作聚合函数时MIN与用作标量函数的MIN之间存在差异。 MIN作为聚合函数肯定会忽略NULL值(与大多数聚合函数一样)。这意味着以下列的最小值为3:

col
NULL
3
NULL

但是,SQLite还提供MIN作为标量函数。忽略NULL值的一种方法是将这些空值合并到最大可能的整数值9223372036854775807,例如

SELECT MIN(COALESCE(col1, 9223372036854775807),
           COALESCE(col2, 9223372036854775807),
           COALESCE(col3, 9223372036854775807)) AS min_value
FROM yourTable;

如果值为NULL,那么我们用一个非常大的值替换它,然后将其作为最小数字考虑。如果您的所有列都可能为NULL,那么您可以使用MIN表达式将上述调用包装到CASE

答案 1 :(得分:0)

你可以尝试一下。

write.xlsx2(x = dup_target, file = "Client_Comparison.xlsx",
        sheetName = "Duplicates_Target", row.names = FALSE,append=TRUE)

IFNULL Document

SQLFiddle