三、SQL—資料檢索②(萬用字元)
萬用字元過濾:like(模糊查詢)
單字元匹配:萬用字元為半形下劃線“_”,它匹配單個出現的字元如萬用字元表示式“b_d”匹配第一個字元為b、第二個字元為任意字元、第三個字元為d的字串。
如:T_Employee表中FName欄位匹配如下規則的資料行:以任意字元開頭,剩餘部分為“erry”
SELECT * FROM T_Employee WHERE FName LIKE "_erry"
單字元匹配在萬用字元表示式中可以出現多次, 如
SELECT * FROM T_Employee WHERE FName LIKE "__n_"
多字元匹配:萬用字元為半形百分號“%”,它匹配任意次數(零或多個)出現的任意字元。
如:萬用字元表示式“k%”匹配以“k”開頭、任意長度的字串
萬用字元表示式“b%t”匹配以“b”開頭、以“t”結尾、任意長度的字串
例如:T_Employee表中FName欄位以“T”開頭長度,長度任意的所有資料
SELECT * FROM T_Employee WHERE FName LIKE "T%"
姓名中包含字母“n”的員工資訊
SELECT * FROM T_Employee WHERE FName LIKE "%n%"
單字元匹配和多字元匹配一起使用
如:T_Employee表中FName欄位匹配最後一個字元為任意字元、倒數第二個字元為“n”、長度任意的字串。
SELECT * FROM T_Employee WHERE FName LIKE "%n_"
空值檢測:
待檢測欄位名IS NULL
查詢所有姓名未知的員工資訊
SELECT * FROM T_Employee WHERE FNAME IS NULL
待檢測欄位名IS NOT NULL
查詢所有姓名已知的員工資訊
SELECT * FROM T_Employee WHERE FNAME IS NOT NULL
IS NULL /IS NOT NULL可和其他過濾條件一起使用
查詢所有姓名已知且工資小於5000的員工資訊
SELECT * FROM T_Employee WHERE FNAME IS NOT NULL AND FSalary <5000
反義運算子:!非(只能在MSSQL,DB2中使用)
“!=”表示“不等於”、“!<”表示“不小於”,而“!>”表示“不大於”
檢索所有年齡不等於22歲並且工資不小於2000元”
SELECT * FROM T_Employee WHERE FAge!=22 AND FSALARY!<2000
若想在其他資料庫中使用非,可以直接使用not運算子或者同義轉換符。一般推薦使用not
(不小於即大於等於),則以上語句可改寫為:
SELECT * FROM T_Employee WHERE FAge<>22 AND FSALARY>=2000
多值檢測:OR/IN
or
公司要為年齡為23歲、25歲和28歲的員工發福利,請將他們的年齡、工號和姓名檢索出來
SELECT FAge,FNumber,FName FROM T_Employee WHERE FAge=23 OR FAge=25 OR FAge=28
in:使用方法為“IN (值1,值2,值3……)”
SELECT FAge,FNumber,FName FROM T_Employee WHERE FAge IN (23,25,28)
範圍值檢測:between and 包括邊界值,即閉區間。
用方法:“欄位名BETTWEEN左範圍值AND右範圍值”,需要查範圍值時,優先使用它。
檢索所有年齡介於23歲到27歲之間的員工資訊
1,inSELECT * FROM T_Employee WHERE FAGE IN(23,24,25,26,27)
2,普通查詢SELECT * FROM T_Employee WHERE FAGE>=23 AND FAGE <=27
3,between andSELECT * FROM T_Employee WHERE FAGE BETWEEN 23 AND 27
使用“BETTWEEN AND”能夠進行多個不連續範圍值的檢測
如:檢索所有工資介於2000元到3000元之間以及5000元到8000元的員工資訊
SELECT * FROM T_Employee
WHERE (FSalary BETWEEN 2000 AND 3000)
OR (FSalary BETWEEN 5000 AND 8000)