如果选择的值为null,则mysql显示0?

时间:2011-12-20 11:33:32

标签: mysql null default-value

我有一个很长的SQL查询,可以计算有关付款和货件的一些信息。在某些情况下,值为null.我认为这是因为它被除以0。

以下是我的查询的一小部分:

     ROUND(sum(case when shipping_method = 'c' AND (paid_amount - shipping_costs) < 70 then 1 end) * 100 / sum(case when shipping_method = 'c' then 1 end),2) as co_less_70,

我认为当这部分为0时:sum(case when shipping_method = 'colissimo' then 1 end),2)我的查询显示为null。有没有办法为此co_less_70列分配默认值?

3 个答案:

答案 0 :(得分:3)

是。您可以使用COALESCE()功能:

  

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce
  返回列表中的第一个非NULL值,如果没有非NULL值,则返回NULL。

在您的代码中:

COALESCE(
    ROUND(sum(case when shipping_method = 'c' AND (paid_amount - shipping_costs) < 70 then 1 end) * 100 / sum(case when shipping_method = 'c' then 1 end),2),
    0
) AS co_less_70

答案 1 :(得分:2)

IFNULL(
  ROUND(sum(case when shipping_method = 'c' AND (paid_amount - shipping_costs) < 70 then 1 end) * 100 / sum(case when shipping_method = 'c' then 1 end),2)
,<default>) AS co_less_70,

答案 2 :(得分:0)

您可以设置默认大小写,但除零之外的任何内容: -

sum(case when shipping_method = 'colissimo' then 1 else some_value end case),2)