这是两个数据
Table1 Table2
ID ColA ID ColB
01 10 01 20
02 20 02 Null
03 30 03 30
04 25 04 Null
所以我想从Col1减去Col2
我已经编写了sql Query但它没有正常工作
select (Table1.ColA-Table2.ColB)as Temp from Table1
inner join Table2 on Table1.ID Table2.ID
所以我的问题是当从table2得到null值的时候减法没有这样做,那么将如何解决这个问题
我希望当值为null时,将值取为0
答案 0 :(得分:2)
您可以使用COALESCE将null
默认为0
:
select COALESCE(Table1.ColA, 0) - COALESCE(Table2.ColB, 0) as Temp
from Table1 inner join Table2 on Table1.ID Table2.ID
COALESCE接受多个参数并返回第一个非空值。
在某些数据库中,如果您只需要两个参数,则可以使用COALESCE的简写功能。这些函数可能具有nvl
,ifnull
,isnull
等名称,具体取决于数据库,或者可能根本不存在。另一方面,COALESCE
本身在大多数数据库中都可用,因此它是一个不错的选择。
答案 1 :(得分:0)
如果使用SQL Server或TSQL,请使用isnull()
,如下所示:
select (isnull(Table1.ColA, 0) - isnull(Table2.ColB, 0))as Temp from Table1
inner join Table2 on Table1.ID Table2.ID
如果您使用其他DBMS,请使用COALESCE
或ifnull()
代替isnull()
。
答案 2 :(得分:0)
尝试使用sql或mysql的IFNULL函数
select ((IFNULL(Table1.ColA, 0))- (IFNULL(Table2.ColB, 0))) as Temp from Table1 inner join Table2 on Table1.ID = Table2.ID