oracle null 系统参数,Oracle中null的使用详解

问:什么是NULL?

答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零。

ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:

1、主键字段(primary key),

2、定义时已经加了NOT NULL限制条件的字段

说明:

1、等价于没有任何值、是未知数。

2、NULL与0、空字符串、空格都不同。

3、对空值做加、减、乘、除等运算操作,结果仍为空。

4、NULL的处理使用NVL函数。

5、比较时使用关键字用“is null”和“is not null”。

6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。

7、排序时比其他数据都大(索引默认是降序排列,小→大),所以NULL值总是排在最后。

使用方法:

现有一个商品销售表sale,表结构为:

month  char(6)  –月份

sellnumber(10,2) –月销售金额

create table sale (month char(6),sell number);

然后我们给该表插入12条记录:

insert into sale values(‘200001’,1000);

insert into sale values(‘200002’,1100);

insert into sale values(‘200003’,1200);

insert into sale values(‘200004’,1300);

insert into sale values(‘200005’,1400);

insert into sale values(‘200006’,1500);

insert into sale values(‘200007’,1600);

insert into sale values(‘200101’,1100);

insert into sale values(‘200202’,1200);

insert into sale values(‘200301’,1300);

insert into sale values(‘200008’,1000);

insert into sale(month) values(‘200009’);

注意:最后一条记录的sell值为空,接下来测试几条sql来看看null的特性:

select * from sale where null=null;

MONTH SELL

—— —-

没有任何输入,说明null=null返回false,null与其自身都不相等,呵呵,有一点怪异。

select * from sale where null = 0;

MONTH SELL

—— —-

没有任何输入,说明null=0返回false,null与0不相等。

select * from sale where null = ”;

MONTH SELL

—— —-

没有任何输入,说明null=”返回false,null与”不相等。

select * from sale where ”=”;

MONTH SELL

—— —-

没有任何输入,说明”=”返回false,”与”不相等。

SQL> select * from sale where null is null;

MONTH SELL

—— —-

200001 1000

200002 1100

200003 1200

200004 1300

200005 1400

200006 1500

200007 1600

200101 1100

200202 1200

200301 1300

200008 1000

200009

12 rows selected

sale表的所有数据都成功返回,说明null is null返回true,看来null只能使用is null来识别。

再来看看null对于集合函数的影响:

SQL> select count(*) from sale;

COUNT(*)

———-

12

SQL> select count(sell) from sale;

COUNT(SELL)

———–

11

可以看出count函数在使用某一列作为参数的时候不会计算null,而count(*)会将null计算在内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值