结论先上:Oracle中,判断是否为null值(默认记录没有插入值是null,而不是空字符串),要使用is null或者is not null,不然使用 =null != null 是查不到记录的
测试案例:
建表与赋值语句:
create table a_test ( id varchar2(10), value varchar2(10));
insert into a_test values ( '1', '正常值1' );
insert into a_test values ( '2', '正常值2' );
insert into a_test values ( '3', '' ); --等同于insert into a_test values ( '3', NULL);
insert into a_test values ( '4', NULL);
insert into a_test values ( '5', '正常值5' );
insert into a_test values ( '6', ' ' ); --插入了空字符,不是null值,null代表了未知情况
insert into a_test values ( '7', ' ' ); --插入了3个空字符,区别于一个空字符串
insert into a_test values ( '8', NULL);
select * from a_test t ;
表如下:
案例一:is null ,空字符串不是null,所以检索记录不会出现,id为6,7的那2条记录
案例二:is not null
案例三:=null ; != null 是查不到记录的
案例四:=’’ !=’’ (无空格的字符串),等同于 = null != null,同样检索不到记录
案例五:= ‘ ’(有一个空格的空字符串)
案例六:= ‘ ’(有3个空格的空字符串,区别于一个空格的空字符串,检索结果不一样)
案例七: != ‘ ’(一个空格字符串),先剔除值为null的记录,再剔除非一个空格字符串的记录