千家信息网

Oracle中Null与空字符串的区别是什么

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇文章为大家展示了Oracle中Null与空字符串的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。含义解释:问:什么是NULL?答:在我们不知道具
千家信息网最后更新 2025年02月02日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值总是排在最后。

使用方法:
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)      --月份
sell    number(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的空值就是这么的用法,我们最好熟悉它的约定,以防查出的结果不正确。

但对于char 和varchar2类型的数据库字段中的null和空字符串是否有区别呢?

作一个测试:

create table test (a char(5),b char(5));

SQL> insert into test(a,b) values(''1'',''1'');

SQL> insert into test(a,b) values(''2'',''2'');

SQL> insert into test(a,b) values(''3'','''');--按照上面的解释,b字段有值的

SQL> insert into test(a) values(''4'');

SQL> select * from test;

A B
---------- ----------
1 1
2 2
3
4

SQL> select * from test where b='''';----按照上面的解释,应该有一条记录,但实际上没有记录

未选定行

SQL> select * from test where b is null;----按照上面的解释,应该有一跳记录,但实际上有两条记录。

A B
---------- ----------
3
4

SQL>update table test set b='''' where a=''2'';
SQL> select * from test where b='''';

未选定行

SQL> select * from test where b is null;

A B
---------- ----------
2
3
4

上述内容就是Oracle中Null与空字符串的区别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

字段 查询 数据 结果 空字符 解释 就是 面的 处理 内容 实际 实际上 情况 技能 条件 知识 类型 索引 语句 运算 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 阿里云服务器学生一元是什么 计算机网络安全案例铁道机车 软件开发培训哪个质量好 戴尔服务器管理口密码是多少 云服务器文件图片资源 山西租用gpu服务器公司 浦发银行软件开发值得去吗 自动化公司软件开发都干嘛 网络安全法面面观 百度计算机网络技术网络部 软件开发公司质量管理体系 做金融模型的软件开发 软件开发实战c 开发实战 网络安全与执法岗位人民警察 陕西 检察院 网络安全 崔艳鹏 数据库中c下面加一横 pptp服务器地址分享 h2数据库创建多个 软件开发行业绩效考核方案 什么计算机网络技术专业 酷讯互联网络科技 睿思互联网保险科技大会 数据库原理实验教案参考答案 小米公司软件开发员领导 catpixel服务器喵皮咳嗽 网络安全法解读ppt和讲稿 开源代理服务器 windows 网络安全怎么防范个人看法 网络安全法律法规体系中 mc盗版能进服务器吗
0