虽然我在这里使用 iBatis 进行 o/r 映射,但这绝对是一个纯 SQL 问题。我只提到 iBatis 是为了提供完整的上下文。
我有一张桌子items..fruits
:
fruit_id fruit_name fruit_color fruit_cost
=====================================================
1 apple red 12
2 pear brown 70
3 apple green 18
...
6485 banana yellow 30
6486 plum purple <null>
6487 kiwi green 85
请注意:由于我无法控制的原因,fruit_cost
可以为空。
我有一个 iBatis SQL 查询,它总结了表中所有水果的成本(按名称):
SELECT
sum(item_cost) AS fruitSum
FROM
items..fruits
WHERE
fruit_name = #{value}#
如您所见,当我们对 运行此查询时apple
,返回的fruitSum
将是 30 (12 + 18)。但是当我们运行它时,plum
我们得到 NULL(实际上,在我的完整代码中,我得到net.sf.cglib.beans.BulkBeanException
s,但这并不重要)。
我想知道是否有一些 SQL 魔法我可以洒在我的查询上以强制fruitSum
为零(0),否则它会为空。所以,像这样:
SELECT
sum(item_cost) AS fruitSum DEFAULT 0
FROM
items..fruits
WHERE
fruit_name = #{value}#