double中NULL存在下的全部

2021-10-04 14:26:50 字數 1199 閱讀 4416

建表語句:

create table test(

a double

);插入資料:

insert into test values(99999),

(123),

(null);

where a!=99999自認為應是包含兩條資料,但是結果顯示是去除null以後的那條

查詢結果如下:

select * from test where a!=99999

結果:123.0

where a!=99999 or a=99999自認為應是包含全部資料,但是結果顯示是去除null以後的全部

查詢結果如下:

select * from test where a!=99999 or a=99999

結果:99999.0

123.0

where a!=99999 or a=99999 or a is null 才是實際上的全部,與where 1=1是一樣的結果

select * from test where a!=99999 or a=99999 or a is null ;

select * from test ;

結果:99999.0

123.0

null

按邏輯來說,認為a=99999和a!=99999應該能包含全部資料

但是double中(a=99999和a!=99999)只是包含了double型別的全部,並沒有包含null,導致在後續操作中資料缺失

注:往double型別中插入string型別的資料,插入成功,不報錯,但是查詢發現插入的值為null,可以使用is null查詢出來

mysql 中存在null和空時建立唯一索引的方法

好多情況下資料庫預設值都有null,但是經過程式處理很多時候會出現,資料庫值為空而不是null的情況。此時建立唯一索引時要注意了,此時資料庫會把空作為多個重複值,而創alcebrm建索引失敗,示例如下 步驟1 mysql select phone count 1 from user group by...

Junit中double型別的比較

在寫junit單元測試的時候發現直接用assertequals double,double 比較時會發生錯誤。報錯資訊 the method assertequals double,double from the type assert is deprecated junit中沒有assertequ...

hive中的NULL分析

hive中有種假null,它看起來和null一摸一樣,但是實際卻不是null。空值null在底層預設是用 n 來儲存的,hive中 是轉義字元,需要對 進行一次轉義,所以變成 n 如果實際想儲存 n 那麼實際查詢出來的也是null而不是 n 修改預設的null表示 alter table test ...