1. 程式人生 > 其它 >三、SQL—資料檢索②(萬用字元)

三、SQL—資料檢索②(萬用字元)

技術標籤:字串資料庫mysqlsql正則表示式

萬用字元過濾: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)