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是未知的是不能用<>、!=等这样的表达式的 ,

select * from table where A is null and B is not null and B=\'valueB\'
这里是用这种方法选出来,还可以用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时做比较的主要内容,如果未能解决你的问题,请参考以下文章

oracle 查询条件中判断两个字段相等时 一个字段为空则跳过

mysql 在值为null的字段插入数据!

sql如何空值替换成null?

oracle判断表是不是存在字段

thinkphp怎么列出字段值为null

oracle 查询 空值 注意不是 null