【问题标题】:Is it possible to make that instead of NULL will be displayed 0?是否有可能将其显示为 0 而不是 NULL?
【发布时间】:2013-10-14 11:33:25
【问题描述】:

代码:

SELECT 
  count(*) as count, 
  sum(Status = 'test1') as count_test1, 
  sum(Status = 'test2') as count_test2
FROM Table
WHERE Type = 'test'

结果我看到了:

count   count_test1   count_test2
  0       NULL           NULL

请告诉我,是否可以让 NULL 显示为 0 而不是 0?

P.S.:结果是:

count   count_test1   count_test2
  0       0               0

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你可以使用COALESCE

    COALESCE(sum(Status = 'test1'), 0)
    

    IFNULL

    IFNULL(sum(Status = 'test1'), 0)
    

    【讨论】:

    • 使用COALESCE(sum(Status = 'test1'), 0) as count_test1 ?
    【解决方案2】:
    SELECT 
      count(*) as count, 
          IFNULL(sum(Status = 'test1'), 0) as count_test1, 
          IFNULL(sum(Status = 'test2'), 0) as count_test2
    FROM Table
    WHERE Type = 'test'
    

    【讨论】:

    【解决方案3】:

    您可以使用COALESCE 函数,它接受一个数组并返回第一个不为空的元素

    SELECT 
      count(*) as count, 
      COALESCE(sum(Status = 'test1'), 0) as count_test1, 
      COALESCE(sum(Status = 'test2'), 0) as count_test2
    FROM Table
    WHERE Type = 'test'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      相关资源
      最近更新 更多