查询 sql 语句,为null转换为0怎么做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询 sql 语句,为null转换为0怎么做相关的知识,希望对你有一定的参考价值。
例子
select ((select sum(S*R) from t_A b where b.ID = 3092 and b.OrderID = 512 and b.Ivt=1from t_B
把字段名改为你的实际字段名,TABLE改为你实际表名。追问
update T_Product set TotalQuantity = TotalQuantity + isnull((select sum(SSQuan*RCKState) from T_OrderItem b where b.PrdID = 3092 and b.OrderID = 512 and b.IvtBkorNot=0),0) where PrdID = 3092
是不是这样呀,,但是不行呀?
如:select nvl(null,0) a from dual
mysql的话用ifnull。
如:select ifnull(null,0) a from dual
其它数据库的不懂 参考技术B ISNULL(字段名称,0)追问
update T_Product set TotalQuantity = isnull(TotalQuantity,0) + isnull((select sum(SSQuan*RCKState) from T_OrderItem b where b.PrdID = 3092 and b.OrderID = 512 and b.IvtBkorNot=0),0) where PrdID = 3092
是不是这样呀,但是不行呀?
你update少了个U,第二,我没你这么用过,我一般是这么用,(select isnull(sum(SSQuan*RCKState) ,0)from T_OrderItem b where b.PrdID = "+PrdID+" and b.OrderID = "+ID+" and b.IvtBkorNot=0)
不过你可以都运行下,试试看看哪个行,如果你敲的可以运行,请告诉我下
我试过了不行,,问题是我后面带的条件,我要对这结果集isnull才行,
追答都不行,还是只有你的不行?说详细点,我好帮你解决
追问update T_Product set TotalQuantity = TotalQuantity+ (select sum(SSQuan*RCKState) from T_OrderItem b where b.PrdID = 3092 and b.OrderID = 512 and b.IvtBkorNot=0) where PrdID = 3092
这个语句,查询的结果是为null,如果为null的话就为0,
怎么做
第一种代码,这种代码你看看能不能得出正确结果
update T_Product set TotalQuantity = TotalQuantity+ (select isnull(sum(SSQuan*RCKState) ,0)from T_OrderItem b where b.PrdID = 3092 and b.OrderID = 512 and b.IvtBkorNot=0) where PrdID = 3092
第二种代码
declare @Num int
set @Num = (select isnull(sum(SSQuan*RCKState) ,0)from T_OrderItem b where b.PrdID = 3092 and b.OrderID = 512 and b.IvtBkorNot=0)
update T_Product set TotalQuantity = TotalQuantity+@Num where PrdID = 3092
你可能,没有明白我的意思,
你看这语句其中的 select sum(SSQuan*RCKState) from T_OrderItem b where b.PrdID = 3092 and b.OrderID = 512 and b.IvtBkorNot=0,这后面条件b.IvtBkorNot=0,很重要,
我要把这语句(select sum(SSQuan*RCKState) from T_OrderItem b where b.PrdID = 3092 and b.OrderID = 512 and b.IvtBkorNot=0)
判断,如果为null,就为零
我知道你的意思,无论你后面的条件有多少,你选出来的数据,始终是 sum(SSQuan *RCKState)
而你要加的数据也是他,所以,你可以判断,如果为null,就赋值0
我给你的语句,你可以运行下,必定能得到正确的数据
你还是不明白,我update了两条语句。1是当IvtBkorNot=0,2是IvtBkorNot=1,我是批量审核,带更新,
其中有IvtBkorNot=0和IvtBkorNot=1,我主要是根据这个IvtBkorNot字段来更新数据的,
比如我有十条数据,批量更新的话,其中有的IvtBkorNot=0,和IvtBkorNot=1,
这意思分别我次货,和正货
你这种情况一般使用游标
以上是关于查询 sql 语句,为null转换为0怎么做的主要内容,如果未能解决你的问题,请参考以下文章