建表語句:
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 ...