sqlite忽略了最低函数的空值



我只是注意到以下查询:

select min(null,0);

返回null,而我期望获得0 ...(max功能相同(

在文档中说,如果仅比较零值,则min((将返回null。有人可以解释我如何忽略零值,以获取与空相比的实际值?

用作 gentregate 函数时MIN和用作A scalarar 函数的CC_5之间存在差异。MIN作为汇总函数肯定会忽略NULL值(大多数聚合功能也是如此(。这意味着以下列的最小值为3:

col
NULL
3
NULL

但是,SQLITE也提供MIN作为A scalial 功能。忽略 NULL值的一种方法是将这样的零值合并为最大的整数 9223372036854775807,例如

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

在这里,如果一个值为 NULL,则我们用一个非常大的值替换它,然后将其替换为最小的数字。如果您可能将所有列是NULL,则可以用CASE表达式将上述呼叫包装到MIN

您可以尝试。

select IFNULL(MIN(NULL),0)
select IFNULL(MAX(NULL),0)

ifnull文档

sqlfiddle

相关内容

  • 没有找到相关文章

最新更新