例如type欄位有 null、』』、0、1、2、3 幾個值,想要篩選出有資料,但是不為3的資料。
語句:
select
*from t_user where
type
isnot
null
andtype
!='3'
andtype
!=''
;
但是發現查不出資料,這就怪了。
一開始以為oracle同字段不支援2個 != ,那麼測試下:
select
*from t_user where
type
!='3'
andtype
!='4'
;
發現有結果,同欄位2個!=是沒問題的。
這裡只模擬char和varchar2型別,其他的先不考慮。
試下查詢
select
*from t_user where
type
!=''
;-- 查不出結果
select
*from t_user where
type
isnot
null
;-- 有結果
select
*from t_user where
type=''
;-- 查不出結果
select
*from t_user where
type
isnull
;-- 有結果
試下update
那麼update可以嗎?語句:
update t_user set
type=''
where id =1;
update t_user set
type
=null
where id =2;
再查一下:
select
*from t_user where
type
isnull
;發現''和null的結果都能查出來。
也就是說在oracle中,查詢』'和null都要用 is null來查。
回到最初問題
那麼開始遇到的問題就很好解決了。
要篩選不為null和不為』'的資料,只要乙個 is not null 即可。
語句:
select
*from t_user where
type
isnot
null
andtype
!='3'
-- and type !='' -- 這個條件查不出任何內容,必須去掉
問題解決。
注:當型別為char或varchar2時,過濾條件,不要用 =『』 或者 !=』』,因為什麼都查不出來。
mysql沒有此限制。
MySQL中避免NULL的坑
當資料的值為null的時候,可能出現各種意想不到的效果,讓人防不勝防,我們來看看null導致的各種神坑,如何避免?下面對null進行總結 1 null作為布林值的時候,不為1也不為0 2 任何值和null使用運算子 或者 in not in any some all 返回值都為null 3 當in和...
Oracle中null的使用
問 什麼是null?答 在我們不知道具體有什麼資料的時候,也即未知,可以用null,我們稱它為空,oracle中,含有空值的表列長度為零。oracle允許任何一種資料型別的字段為空,除了以下兩種情況 1 主鍵字段 primary key 2 定義時已經加了not null限制條件的字段 說明 1 等...
oracle中NULL的意義和條件操作
null的意義 沒有值,不等價於任何值,是乙個未知數,具有不確定性。null和空字串,0,空格均不相等。當null作為條件進行操作時,就不能用 即不能定值判斷,應該使用is null 或者 is not null。此外,非用is null is not null語句外,對null的操作均不會出現返回...