Oracle中null的使用详解

最好不查找NULL,或is not null ,is null,更不能比较null值问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,

最好不查找NULL,或is not null ,is null,更不能比较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值总是排在最后。

使用方法:
SQL> select 1 from dual where null=null;
没有查到记录
SQL> select 1 from dual where null=”;
没有查到记录
SQL> select 1 from dual where ”=”;
没有查到记录
SQL> select 1 from dual where null is null;
         1
———
         1
SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
         1
———
         1
对空值做加、减、乘、除等运算操作,结果仍为空。
SQL> select 1+null from dual;
SQL> select 1-null from dual;
SQL> select 1*null from dual;
SQL> select 1/null from dual;
查询到一个记录.
注:这个记录就是SQL语句中的那个null
设置某些列为空值
update table1 set 列1=NULL where 列1 is not null;
现有一个商品销售表sale,表结构为:
month  char(6)  –月份
sellnumber(10,2) –月销售金额
create table sale (month char(6),sell number);
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值为空)
commit;
共输入12条记录
SQL> select * from sale where sell like ‘%’;
MONTH        SELL
—— ———
200001       1000
200002       1100
200003       1200
200004       1300
200005       1400
200006       1500
200007       1600
200101       1100
200202       1200
200301       1300
200008       1000
       
查询到11记录.
       
结果说明:
查询结果说明此SQL语句查询不出列值为NULL的字段
此时需对字段为NULL的情况另外处理。
SQL> select * from sale where sell like ‘%’ or sell is null;
SQL> select * from sale where nvl(sell,0) like ‘%’;
       
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记录.
       
Oracle的空值就是这么的用法,我们最好熟悉它的约定,以防查出的结果不正确。

其他意见:

在 MS SQL Server 中,是存在的。
即WHERE field_1 IS NULL 和 filed_1 = ” 返回 2 种结果
” 和 NULL 是2个东西。

在 Oracle 8.1.6   和 9.2 中,你存入 ” 后,数据库会自动存储为 NULL
此时只能使用 WHERE field_1 IS NULL
感觉好像 ORACLE 中没有 ” 或者说 ” 和 NULL 是一个东西。

可以这么理解:

如果需要区分数据类型的话,
空字符串”一定是NULL
空数字也是NULL
其他空数据类型也是NULL

如果不区分数据类型的话,
空字符串”就是NULL,NULL就是空字符串”

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1933892.html

(0)
上一篇 2025年2月22日 22:20:51
下一篇 2025年2月22日 22:21:08

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • MySQL主从数据库同步延迟问题解决

    最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来 最近在做mysql主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些…

    数据库 2025年2月23日
    100
  • RMAN ORA-19693错误解决

    10.2.0.5 on windows 64 bit 现象:从一个 server A拷贝backupset 至另一个server B。在server B上恢复。首先使用lsquo;catalog 10.2.0.5 on windows 64…

    数据库 2025年2月23日
    100
  • ORA-02030问题解决方法又一例

    给普通用户赋予对v$视图的查询权限,结果报 ORA-02030 错误,ORA-02030: 只能从固定的表/视图查询(ORA-02030: can only select f 首页 → 数据库技术 背景: 阅读新闻 ora-02030问题解…

    数据库 2025年2月23日
    100
  • Oracle表空间增长异常解决又一例

    客户环境某台数据库临时表空间异常增长(日期随机),观察下来可能是下列两个oracle自身的定时job引起, 描述:客户环境某台数据库临时表空间异常增长(日期随机),观察下来可能是下列两个oracle自身的定时job引起, 时间:2014/0…

    数据库 2025年2月23日
    100
  • 如何获取Oracle DBID

    如何获取Oracle DBID,由于DBID在控制文件和数据文件中都存在记录,所以如果能够mount数据库就可以查询v$database视图获得。 1.查询v$database获得 由于DBID在控制文件和数据文件中都存在记录,所以如果能够…

    数据库 2025年2月23日
    100
  • Linux中对MySQL优化

    要求: MySQL数据库管理与维护 1、熟悉Linux上安装、配置和优化MySQL数据库, 2、熟悉 Mysql的AB复制以及读写分离的实现,能完成 要求: mysql数据库管理与维护 1、熟悉Linux上安装、配置和优化MySQL数据库,…

    数据库 2025年2月23日
    100
  • Oracle的SQL语句中如何处理‘’符号

    lsquo;rsquo;符号在SQL中有特殊含义,所以在SQL中想要写入,需要特殊处理。如下SQL语句就不能正确运行:SQLgt; select #39; ‘&’符号在SQL中有特殊含义,所以在SQL中想要写入&,需要特殊处…

    数据库 2025年2月23日
    100
  • Oracle 10G安装中一些常见问题解决

    一,如何彻底删除旧版本的Oracle1,在cmd里运行DBCA,在这里删除Oracle实例,有多少删多少;2,在开始程序中找到Oracle子目录下 一,如何彻底删除旧版本的Oracle 1,在cmd里运行DBCA,在这里删除Oracle实例…

    数据库 2025年2月23日
    100
  • Oracle 建立临时表语法及使用技巧

    Oracle Temporary Tables(Oracle 临时表)1. 建立临时表语法A.ON COMMIT DELETE ROWS 定义了建立事务级临时表的方法CREATE GLOBAL TEMPORAR Oracle Tempora…

    数据库 2025年2月23日
    100
  • Linux Mysql知识学习篇

    1.查看Linux 是否安装了Mysql[root@localhost zhoulinghong]# rpm -qa |grep MySQL MySQL-server-community-5.1.22-0.rhel4已经安装了 1.查看Li…

    数据库 2025年2月23日
    100

发表回复

登录后才能评论