我正在尝试选择列突变中的总价值。当列中没有数据时,语句返回NULL
。
我想用0.00替换返回的NULL
。
我试图在我的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;
发布于 2018-12-24 15:43:18
如果返回集没有行,SUM()返回NULL,所以只需添加IFNULL函数来检查SUM是否返回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
求和函数忽略空值。您可以通过以下方式验证它:
SELECT SUM(X)
FROM (
SELECT 1 AS X
UNION SELECT 10 AS X
UNION SELECT NULL AS X
) AS q
发布于 2018-12-24 15:45:26
SUM()
函数忽略空值,并对所有非空值进行求和.
SUM()
可能返回null的原因有两个:
因为您的mutations
列是NOT NULL
,所以它不可能是第一个原因,这是因为没有找到任何行。
要防止null,需要在IFNULL
之外调用SUM
SELECT CONCAT('€ ', FORMAT(IFNULL(SUM(mutations),0),2)) AS total
FROM scu_statement
WHERE type='2'
https://stackoverflow.com/questions/53918298
复制相似问题