oracle数据库中插入一行记实时,若是不给某一个栏位赋值,且该栏位是可空字段,那么,这个栏位的值就可能会是null或者空字符串,那么,对于这种null、空字符串值到底该若何查询呢?
建立一张数据库测试表,用于演示null空值的查询
create table tblNullData
(
Id VARCHAR2(50) not null,
ColCode VARCHAR2(50),
ColName VARCHAR2(100)
);
往测试表中插入测试记实,包含一个NULL、空字符串、非空字符串值
insert into tblNullData(Id, ColCode, ColName) values(sys_guid(), 'Col001', '这是有值的');
insert into tblNullData(Id, ColCode, ColName) values(sys_guid(), 'Col002', '');
insert into tblNullData(Id, ColCode, ColName) values(sys_guid(), 'Col003', NULL);
查询测试表中的所稀有据
select * from tblNullData;
若是想要查询ColName的值为空的,该怎么查询呢?下面的sql,从运行成果可以看出,是行不通的
select * from tblNullData where ColName = null;
在oracle数据库中,null与任何字段比拟城市返回false,为此,oracle供给了一个is null词组判定null。从运行成果可以看出,空字符串不是null
select * from tblNullData where ColName is null;
在oracle数据库中,想要查询非null的值,就需要利用is not null词组判定了。从运行成果可以看出,空字符串的记实行查询出来了
select * from tblNullData where ColName is not null;
假设想要查询出null和空字符串的成果,该怎么实现呢?此时可以利用NVL(expr1,expr2)函数,将null转换当作空字符串比力
请注重:此处的空字符串需要指心猿意马一个值,好比两个单引号包含一个空格,或者具体的值,若是仅仅只是两个单引号的话,匹配是没有成果的
select * from tblNullData where NVL(ColName, ' ') = ' ';
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!