MySQL IFNULL仍然返回NULL

时间:2018-12-24 23:20:19

标签: mysql

我正在尝试在突变列中选择总值。如果该列中没有数据,则语句返回NULL

我想将返回的NULL替换为 0.00

我正在尝试在我的SQL语句中实现IFNULL函数(我正在使用MySQL)。当我执行该语句时,我仍然得到NULL

有人知道我该如何解决吗?

这是我的完整声明:

SELECT CONCAT('€ ', FORMAT(SUM(IFNULL(mutations,'0.00')),2)) AS total
FROM scu_statement 
WHERE type='2'

表格:

CREATE TABLE `scu_statement` (
  `id` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  `mutations` decimal(50,2) NOT NULL,
  `status` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

2 个答案:

答案 0 :(得分:1)

如果返回集没有行,则 SUM()返回 NULL ,因此只需添加 IFNULL 函数来检查 SUM < / em>返回 NULL

SELECT CONCAT('€ ', FORMAT(IFNULL(SUM(mutations), 0),2)) AS total
FROM scu_statement 
WHERE type='2'

验证示例:

SELECT CONCAT('€ ', FORMAT(IFNULL(SUM(mutations), 0),2)) AS total
FROM (SELECT * FROM (SELECT 1 AS mutations) as t1 LIMIT 0) as q

SUM函数忽略NULL值。您可以通过以下方式进行验证:

SELECT SUM(X)
FROM (
             SELECT 1 AS X
             UNION SELECT 10 AS X
             UNION SELECT NULL AS X    
         ) AS q

答案 1 :(得分:1)

SUM()函数将忽略空值,并对所有非空值求和。

SUM()可能返回null的原因有两个:

  • 所有行的值为空。

  • 没有找到行。

由于您的mutations列为NOT NULL,所以它不可能是第一个原因,因为没有找到行。

为防止空值,您需要在IFNULL的外部{em {em}

SUM