沒有新增非空約束列是可以為空值的(也就是null),有時我們需要對空值進行檢測,
比如要查詢所有姓名未知的員工資訊。既然null代表空值,有的開發人員試圖通過下面
的sql語句來實現:
select * from t_employee
where fname=null
這個語句是可以執行的,不過執行以後我們看不到任何的執行結果,那個fnumber為
「it002」的資料行中fname欄位為空,但是沒有被查詢出來。這是因為在sql語句中對空值的
處理有些特別,不能使用普通的等於運算子進行判斷,而要使用is null關鍵字,使用方法為
「待檢測欄位名is null」,比如要查詢所有姓名未知的員工資訊,則執行下面的sql語句:
select * from t_employee
where fname is null
如果要檢測「欄位不為空」,則要使用is not null,使用方法為「待檢測欄位名is not
null」,比如要查詢所有姓名已知的員工資訊,則執行下面的sql語句:
select * from t_employee
where fname is not null
使用「!」運算子的方式由於只能執行在mssqlserver和db2兩種資料庫系統上,所以如
果應用程式有移植到其他資料庫系統上的需求的話,就應該避免使用這種方式;使用同義運算子
的方式能夠執行在所有主流資料庫系統上,不過由於粗心等原因,很容易將「不大於」表示成「<」,
而忘記了「不大於」是包含「小於」和「等於」這兩個意思的,這樣就會造成檢索資料的錯誤,
造成應用程式的bug;而採用not運算子的方式能比較容易的表達要實現的需求,而且能夠實現
複雜的巢狀,最重要的是避免了潛在的應用程式的bug,所以除了「<>」這種方式之外,我們推
薦使用not運算子的方式來表示「非」的語義。
select * from t_employee
where fage!=22 and fsalary!<2000
select * from t_employee
where not(fage=22) and not(fsalary<2000)
select fage,fnumber,fname from t_employee
where fage in (23,25,28)
php判斷空值 PHP空值檢測函式與方法彙總
幾乎任何入口的http請求我們都會去檢測它攜帶的引數,類似 isset empty 的函式一定不少見。以下的測試結果基於 php7.16 是否定義判斷 isset 可以使用 isset 函式判斷乙個變數是否定義,陣列內某個元素是否被初始化,它的效率比 array key exists 高4倍左右 a...
iOS安全防護 越獄檢測 二次打包檢測 反除錯
1 檢測是否被注入,阻止cycript等的動態庫注入。2 在 xcode 編譯選項中 other linker flags 中新增 wl,sectcreate,restrict,restrict,dev null 標識。注 這個方案只適合ios10.0以下系統,而且個別系統打出來的包還會發生cras...
資料建模 極端值的檢測 離群值檢測
極端值 又稱離群值,往往會扭曲 結果並影響模型精度。回歸模型 線性回歸,廣義線性回歸 中離群值的影響尤其大,使用該模型時我們需要對其進行檢測和處理。處理離群值或者極端值並不是資料建模的必要流程,然而,了解它們對 模型的影響也是大有裨益的。資料分析師們需要自己判斷處理離群值的必要性,並結合實際問題選取...