oracle字段为''或者NULL时做比较
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle字段为''或者NULL时做比较相关的知识,希望对你有一定的参考价值。
比如一个table中有A字段和B字段,两个字段的值可能相等、可能不等、可能都为空、可能其中一个为空
A B
valueB
以上例子是A为空字符,如果sql语句写成select * from table where A<>B 这样就是无记录返回
如果光看两条记录的话确实是不相等,请问oracle中如何写这条sql语句才能返回记录
最终目的就是要查出这两个字段不相等的记录来,从理论上分析应该是能查出来的(因为A字段和B字段确实不相等),但是在oracle里面null是未知的是不能用<>、!=等这样的表达式的 ,
这里是用这种方法选出来,还可以用nvl函数先将空值设为某个值(这个值需要根据具体情况定,以保证A和B不相等)后再进行比较,select * from table where nvl(A,1)<>B
其中oracle中null的具体介绍可看一下这个http://hi.baidu.com/k_c_m/blog/item/4ed42b03a10ea0e008fa93f6.html 参考技术A select * from table t , table m where t.a<>m.b 参考技术B 不知道 你说的神马意思 返回记录结果就是 没有
SQL判断字段是不是为空,为NULL
参考技术A SQL语句条件查询时,有时会判断某个字段是否为空或者是否为NULL;字段内容为空有两种情况
1.为null
2.为字符串的空''
语句如下:
select * from table(表名) where column is null or trim(字段)='';
这样就可以排除字段内容为null、''的。
判断某个字段不为空
select * from table(表名) where trim(column) != '';
曾经尝试判断null:is not null.但是不起作用,放弃。。。直接 trim(字段) != '' 就能解决。
以上是关于oracle字段为''或者NULL时做比较的主要内容,如果未能解决你的问题,请参考以下文章