沒有新增非空約束列是可以為空值的(也就是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
+---------+-------+------+---------+
| fnumber | fname | fage | fsalary |
+---------+-------+------+---------+
| it002 | null | 27 | 2800.00 |
+---------+-------+------+---------+
如果要檢測「欄位不為空」,則要使用is not null
, 使用方法為「待檢測欄位名 is not null」,
比如要查詢所有姓名已知的員工資訊,則執行下面的sql語句:
select * from t_employee where fname is not null
+----------+-------+------+---------+
| fnumber | fname | fage | fsalary |
+----------+-------+------+---------+
| dev001 | tom | 25 | 8300.00 |
| dev002 | jerry | 28 | 2300.00 |
| hr001 | jane | 23 | 4300.00 |
| hr002 | tina | 25 | 3300.00 |
| it001 | smith | 28 | 5500.00 |
| sales001 | timmy | 25 | 5300.00 |
| sales002 | stone | 35 | 8300.00 |
+----------+-------+------+---------+
"is null/is not null"可以和其他的過濾條件一起使用。
比如要查詢所有姓名已知切月工資小於5000元的員工資訊,則執行下面的sql語句:
select * from t_employee where fname is not null and fsalary < 5000
+---------+-------+------+---------+
| fnumber | fname | fage | fsalary |
+---------+-------+------+---------+
| dev002 | jerry | 28 | 2300.00 |
| hr001 | jane | 23 | 4300.00 |
| hr002 | tina | 25 | 3300.00 |
+---------+-------+------+---------+
SQL 3 高階資料過濾 4 多值檢測
例1 公司要為年齡為23歲 25歲和28歲的員工發福利,請將他們的年齡 工號和姓名檢索出來 要完成這樣的功能,我們可以使用or語句來連線多個等於判斷。sql語句如下 select fage,fnumber,fname from t employee where fage 23 or fage 25 ...
SQL 3 高階資料過濾 1 萬用字元過濾
到目前為止,我們講解的資料方式都是針對特定值的過濾,比如 檢索所有年齡為25的所有員工資訊 檢索所有工資助2500元 3800元之間的所有記錄 但是這種過濾方式並不能滿足一些模糊的過濾方式。比如檢索所有姓名中含有 th 員工或者檢索所有姓 王 的員工,實現這樣的檢索操作必須使用萬用字元進行過濾。sq...
SQL學習之高階資料過濾
一 高階資料過濾之in操作符 in 操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配。in取一組由逗號分隔 括在圓括號中的合法值。如下 select itemid,itemname,checkvaluenum,checkvaluestring,resultlevel from t check ...