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 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!