【问题标题】:How to treat MAX() of an empty table as 0 instead of NULL如何将空表的 MAX() 视为 0 而不是 NULL
【发布时间】:2013-03-18 10:52:02
【问题描述】:

我尝试从表中选择最大值

SELECT MAX(cid) FROM itemconfiguration;

但是,当表 itemconfiguration 为空时,MAX(cid) 语句被评估为 NULL,而我需要一个数字。如何处理并将NULL视为0?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    只需使用Coalesce 或NVL 来处理NULL。

    如果MAX(cid)为NULL,下面的代码将返回0

    SELECT COALESCE(MAX(cid), 0)
    FROM   itemconfiguration
    

    【讨论】:

    • COALESCE 更可取,因为它更通用(可以接受两个以上的参数并返回第一个非 NULL,而 NVL 是两个参数的特例),它 does short-circuit (不评估第一个非 NULL 之后的参数)并且它在 SQL-92 中标准化(而 NVL 是 Oracle 专有的)。
    【解决方案2】:

    SELECT NVL(MAX(cid), 0) FROM itemconfiguration;

    【讨论】:

      【解决方案3】:

      使用 ISNULL 可以在 max 返回 null 时替换数字,

      ISNULL(MAX(cid),0) FROM itemconfiguration;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-14
        • 1970-01-01
        • 1970-01-01
        • 2014-08-16
        • 1970-01-01
        • 2021-11-29
        相关资源
        最近更新 更多