我正在尝试在突变列中选择总值。如果该列中没有数据,则语句返回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;
答案 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