您的位置:首页 > 数据库 > Oracle

Oracle中的NULL、’’(空字符串)以及’_’(空格)

2016-02-20 21:32 519 查看
本文首发于 http://youngzy.com/
在Oracle中使用
null
''
(空字符串),
'_'
(空格)时,有没有遇到问题?产生疑惑?

null
’’
(空字符串)是一个意思

注: 为了便于区分空字符串和空格,下面的示例均以 _ 代表空格
举个例子:
--建表
create table tbl_a (col_a varchar2(1), col_b int);

--  造数据
insert into tbl_a values(‘_’, 1); --  插入空格
insert into tbl_a values(‘’, 2); --  插入空字符串
insert into tbl_a values(null, 3); --  插入NULL
以上SQL执行成功后,执行 
select
来检查:
   select count(*) from tbl_a; -- 结果是 3select count(*) from tbl_a where col_a = ‘_’;  -- 结果是 1select count(*) from tbl_a where col_a = ‘’;  -- 结果是 0select count(*) from tbl_a where col_a is null; -- 结果是 2 
注意: 由于 ‘’ (空串)默认被转换成了
NULL
,不能使用
= ‘’
作为查询条件。也不能用
is ‘’
。虽然不会有语法错误,但是不会有结果集返回。 只能用
is null
。不等于就是
is not null
进一步验证:
select nvl(col_a, ‘a’) from tbl_a;
结果:
NVL(COL_A,’A’)
1
2a
3a
原来,在Oracle中,
null
’’
(空字符串)是一个意思。

分析函数与NULL

在使用AVG,MAX,SUM,COUNT等函数时,为NULL的纪录会被忽略。再插入几条数据:
 insert into tbl_a values(null, null); --  插入NULL-- 执行成功。-- 再次证明,’’ 被当作了null处理.-- 因为该字段是 int 类型,如果是字符串,执行会报错insert into tbl_a values(‘a’, ‘’); 
查看数据:
select * from tbl_a;
结果如下:
COL_ACOL_B
_1
2
3
a
_ 代表空格其余空白处表示 NULL
验证:
 select AVG(col_b) from tbl_a; -- 结果为 2 ,NULL的纪录行忽略掉了select MAX(col_b) from tbl_a; -- 结果为 3select SUM(col_b) from tbl_a; -- 结果为 6select COUNT(col_b) from tbl_a; -- 结果为 3select COUNT(col_a) from tbl_a; -- 结果为 2select COUNT(*) from tbl_a; -- 结果为 5 

排序时,NULL作为无穷大处理。

select * from tbl_a order by col_b desc ;
结果如下:
COL_ACOL_B
a
3
2
_1
参考:http://blog.csdn.net/weiwenhp/article/details/7035327阅读原文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: