在MySQL中添加时将-1设置为0

时间:2010-08-16 15:08:32

标签: php mysql

我有一个数据库使用DECIMAL类型值进行各种原油测试。运行这些测试时遇到某些情况: 1.)测试运行并找到值; 2.)你可以明确地说没有任何东西(数据库中为0); 3.)未运行测试(数据库中为NULL); 4.)发现了一些东西,但测试不够准确无法辨别多少(在这种情况下数据库中使用了-1)。

我的问题是我需要将结果集作为所有4的总和返回。我一直在使用“SELECT property1 + property1 + ... FROM ...”类型的查询来执行此操作。我使用'WHERE ___ IS NOT NULL'来处理案例3,但问题是在案例4中,我不想添加-1,我想将其添加为0.我有什么方法可以做到这一点MySQL的?我真的不想单独得到每个结果集,并且必须使用PHP来处理这个问题,但我想如果没有解决办法我可以。

此外,在有人推荐之前,我没有太多可以改变数据库结构的方法。但是,如果你有一些完全巧妙的修复要求,我不会反对听到它。

编辑:感谢所有人的快速回复。感谢帮助!

4 个答案:

答案 0 :(得分:3)

您可以使用if statement

property1 + property2 + property3 + IF(property4 > 0, property4, 0)

答案 1 :(得分:0)

如果您执行... + cond4 + ...之类的操作,可以将其替换为。.. + CASE WHEN cond4 == -1 THEN 0 ELSE cond4 END + ...

答案 2 :(得分:0)

SELECT  SUM(GREATEST(COALESCE(property1, 0), 0))
FROM    mytable

答案 3 :(得分:0)

我会考虑Control Flow Functions

SELECT property1 + property2 + property3 + IF(property4 > 0, property4, 0) WHERE _ IS NOT NULL