oracle null与空字符串
2016-12-07 11:23
435 查看
转自:http://blog.csdn.net/getdate/article/details/6789693
在Oracle中 如何查询 字段为空的记录呢?
背景 :
表 testNull (
id int not null primary key ,
name varchar2(20) null
)
insert into testNull values(1,'a');
insert into testNull values(2,'b');
insert into testNull values(3,'');
insert into testNull values(4,'');
如果要查询 name 为 ‘’ 或者 null 的记录,则要通过 is null 来完成
select * from testNull where name is null; 如果写成 where name ='' 或者 where name = null 则无法查询出来。
from:http://edgenhuang.iteye.com/blog/975567
-- oracle 将 空字符串即''当成null,测试脚本如下:
select nvl(null,-1) from dual;
select nvl('','-1') from dual;
select nvl(nvl(null,''),-1) from dual;
select nvl(trim(' '),'-1') from dual;
-- 但是要记住,null 与任何值做逻辑运算得结果都为 false,包括和null本身:
select nvl(max('1'),-1) from dual where null = '';
select nvl(max('1'),-1) from dual where null <> '';
select nvl(max('1'),-1) from dual where null = '-1';
select nvl(max('1'),-1) from dual where null <> '-1';
select nvl(max('1'),-1) from dual where null = null;
select nvl(max('1'),-1) from dual where null <> null;
-- 不过,用 is null 判断时,空字符串和 null 都 is null:
select nvl(max('1'),-1) from dual where '' is null;
select nvl(max('1'),-1) from dual where null is null;
--------------------------------------------------------------------------------------------------
-- 还要记住,null 和任何数值进行数学运算,结果都为 null:
select nvl(null + 0,-1) from dual;
-- 不过,可以使用 || 将空字符串或 null 和字符串连接
select 'a' || null || 'b' from dual;
--------------------------------------------------------------------------------------------------
-- 另,作为以下的 Oracle 内置的函数的参数时,结果也为 null:
select nvl(length(null),-1) from dual;
select nvl(trim(null),-1) from dual;
select nvl(ltrim(null),'-1') from dual;
select nvl(rtrim(null),'-1') from dual;
select nvl(rtrim(null,' '),'-1') from dual;
select nvl(soundex(null),'-1') from dual;
select nvl(SubStr(null,1),-1) from dual;
select nvl(InStr(null,1),-1) from dual;
select nvl(replace(null,'a','b'),'-1') from dual;
select nvl(min(null),'-1') from dual;
select nvl(max(null),'-1') from dual;
select nvl(sum(null),'-1') from dual;
select nvl(avg(null),'-1') from dual;
select nvl(sum(null),'-1') from dual;
-- 不过,作为以下的 Oracle 内置的函数的参数时,结果不为null:
select concat('a', null) from dual;
select concat(null, 'a') from dual;
select count(null) from dual;
-- 其他函数用的时候,也可以使用以上的方法测试
在Oracle中 如何查询 字段为空的记录呢?
背景 :
表 testNull (
id int not null primary key ,
name varchar2(20) null
)
insert into testNull values(1,'a');
insert into testNull values(2,'b');
insert into testNull values(3,'');
insert into testNull values(4,'');
如果要查询 name 为 ‘’ 或者 null 的记录,则要通过 is null 来完成
select * from testNull where name is null; 如果写成 where name ='' 或者 where name = null 则无法查询出来。
from:http://edgenhuang.iteye.com/blog/975567
-- oracle 将 空字符串即''当成null,测试脚本如下:
select nvl(null,-1) from dual;
select nvl('','-1') from dual;
select nvl(nvl(null,''),-1) from dual;
select nvl(trim(' '),'-1') from dual;
-- 但是要记住,null 与任何值做逻辑运算得结果都为 false,包括和null本身:
select nvl(max('1'),-1) from dual where null = '';
select nvl(max('1'),-1) from dual where null <> '';
select nvl(max('1'),-1) from dual where null = '-1';
select nvl(max('1'),-1) from dual where null <> '-1';
select nvl(max('1'),-1) from dual where null = null;
select nvl(max('1'),-1) from dual where null <> null;
-- 不过,用 is null 判断时,空字符串和 null 都 is null:
select nvl(max('1'),-1) from dual where '' is null;
select nvl(max('1'),-1) from dual where null is null;
--------------------------------------------------------------------------------------------------
-- 还要记住,null 和任何数值进行数学运算,结果都为 null:
select nvl(null + 0,-1) from dual;
-- 不过,可以使用 || 将空字符串或 null 和字符串连接
select 'a' || null || 'b' from dual;
--------------------------------------------------------------------------------------------------
-- 另,作为以下的 Oracle 内置的函数的参数时,结果也为 null:
select nvl(length(null),-1) from dual;
select nvl(trim(null),-1) from dual;
select nvl(ltrim(null),'-1') from dual;
select nvl(rtrim(null),'-1') from dual;
select nvl(rtrim(null,' '),'-1') from dual;
select nvl(soundex(null),'-1') from dual;
select nvl(SubStr(null,1),-1) from dual;
select nvl(InStr(null,1),-1) from dual;
select nvl(replace(null,'a','b'),'-1') from dual;
select nvl(min(null),'-1') from dual;
select nvl(max(null),'-1') from dual;
select nvl(sum(null),'-1') from dual;
select nvl(avg(null),'-1') from dual;
select nvl(sum(null),'-1') from dual;
-- 不过,作为以下的 Oracle 内置的函数的参数时,结果不为null:
select concat('a', null) from dual;
select concat(null, 'a') from dual;
select count(null) from dual;
-- 其他函数用的时候,也可以使用以上的方法测试
相关文章推荐
- 主题:Oracle中Null与空字符串''''的区别
- oracle 的 null 和 空字符串('')
- postgresql与Oracle:空字符串与null
- oracle 的 null 和 空字符串('')
- Oracle中Null与空字符串' '的区别
- oracle中的''空字符串和null居然是等价的
- Oracle中Null与空字符串' '的区别
- Oracle中的NULL、’’(空字符串)以及’_’(空格)
- Oracle中Null与空字符串''的区别
- Oracle中Null与空字符串的区别
- oracle 的 null 和 空字符串('')
- 空字符串与Null 在oracle和MASSQl 中的区别
- Oracle 空字符串和NULL
- oracle中的''空字符串和null居然是等价的
- 使用sql server和sybase时记得''表示空字符串,但是在oracle中却发现没有空字符串一说,oracle把''当null来对待!
- Oracle中Null与空字符串' '的区别
- Oracle中Null与空字符串''''的区别
- oracle 里 插入空字符串会被转成null插入
- Oracle中Null与空字符串' '的区别
- Oracle中Null与空字符串' '的区别