sql减法,有时为空值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql减法,有时为空值相关的知识,希望对你有一定的参考价值。

sql两个字段相减,
update table1 set a=a-(select b from table2);
a为table1中的一个字段,b为table2中一个字段,但table2有部分记录b字段为空值,若要使b有值,a=a-b;b无值时,a=a-0。
问sql应该怎么写呀?

参考技术A 用isnull(a,0)
如果a为null的话,就把a的值赋0

补:如果是oracle的话,用nvl(a,0)这个
参考技术B update table1 set a=a-isnull((select b from table2),0);

update table1 set a=a-isnull((select sum(b) from table2),0);

update table1 set a=a-isnull((select top 1 b from table2),0);
参考技术C 你好!
用isnull(a,0)
如果a为null的话,就把a的值赋0
补:如果是oracle的话,用nvl(a,0)这个
如果对你有帮助,望采纳。
参考技术D update table1 set a=a-(select case when b is null then 0 else b end) as b from table2); 第5个回答  2010-08-11 a=a-isnull(b,0)
update table1 set a=a-(select isnull(b,0) from table2);本回答被提问者采纳

SQL中空值查询''与null 的区别

update 表1
set [kmbm]=[借方总账科目]+'/'+[借方明细科目]+'/'+[单位名称]
where [借方明细科目] is not null and [单位名称]=''
在 and 后面有时候用''可以,而有时候就得用=null 或者is null
请问这几种写法有什么具体的区别吗?
还有
where [借方明细科目]!= and [单位名称]=null
where [借方明细科目]is null and [单位名称]=''
这几种写法都不回提示出错,我所说的不能用是第一种写法执行后有符合条件的但是并没有更新,换中写法后就能实现,而且好像并不固定,有时候第一种能用,有时候第二种能用。

naohoub 你好,你所说的''是有值单看不到,是不是数据里面有空格或者其他不显示的字符那?

可以这么理解,null是没被初始化。

新插入一条记录,字段值是null,输入内容再全部删除以后是''。

如果有值,会不会是chr(0) ?
参考技术A null是没有值 ''是有值,只是不可见 参考技术B 空值是有值的,值就是空字符串 长度为0的字符串

null是没有任何值,没有初始化的

以上是关于sql减法,有时为空值的主要内容,如果未能解决你的问题,请参考以下文章

HttpResponse返回的值为空

SQL中空值查询''与null 的区别

那些年我们踩过的坑,SQL 中的空值陷阱!

automapper如何全局配置map条件过滤null值空值对所有映射起效

那些年我们踩过的坑,SQL 中的空值陷阱!

SQL语句条件为空值