MySQL數據表中帶LIKE的字符匹配查詢
2014年07月15日09:56 百科369
MySQL數據表中帶LIKE的字符匹配查詢
LIKE關鍵字可以匹配字符串是否相等。
- 如果字段的值與指定的字符串相匹配,則符合查詢條件,該記錄將被查詢出來。
- 如果與指定的字符串不匹配,則不符合查詢條件。
基本的語法格式如下:
[NOT] LIKE '字符串'
NOT:可選。加上NOT表示與指定的字符串不匹配時滿足條件。
字符串:指定用於匹配的字符串,該字符串必須加單引號或者雙引號。
“字符串”參數的值可以是一個完整的字符串,也可以是包含百分號(%)或者下划線(_)的通配符。
注意%和_的區別:
- “%”表示任意長度的字符串,長度可以為0。例如,g%gle表示以字母g開頭,以字母gle結尾的任意長度的字符串。g%gle可以表示ggle、gogle、gfgle、google、gusgle、gooooogle等。
- “_”只能表示單個字符。例如,g_gle表示以字母g開頭,以字母gle結尾的5個字符。中間的“_”可以表示任意一個字符。g_gle可以表示gagle、gbgle、gcgle、gdgle或gogle等。
實例1
使用LIKE關鍵字匹配一個完整的字符串'Tom'。SELECT語句的代碼如下:
SELECT * FROM employee WHERE name LIKE 'Tom';
在DOS提示符窗口中查看使用LIKE關鍵字匹配一個完整的字符串'Tom'的操作效果。如下圖所示:
上圖中代碼執行的結果顯示,name字段中取值為Tom的記錄被查詢了出來。其它不符合條件的記錄都被過濾掉了。
在這里,LIKE與等於號(=)是等價的。如果修改為“=”,查詢結果是一樣的。如下圖所示:
但是,上面的情況只對匹配一個完整的字符串有效,如果字符串中包含了通配符,就不能這樣進行替換了。
實例2
使用LIKE關鍵字匹配帶有通配符“%”的字符串'河南%'。SELECT語句的代碼如下:
SELECT * FROM employee WHERE homeaddress LIKE '河南%';
在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'河南%'的操作效果。如下圖所示:
上圖中代碼執行的結果顯示,homeaddress字段以“河南”開頭的記錄都被查詢出來了。
如果使用“=”替換LIKE時,則查詢結果為空記錄。如下圖所示:
上圖中代碼執行的結果顯示,沒有查詢出任何記錄。這說明字符串中包含了通配符時,“=”就不能代替LIKE了。
實例3
使用LIKE關鍵字匹配帶有通配符“_”的字符串'T_m'。SELECT語句的代碼如下:
SELECT * FROM employee WHERE name LIKE 'T_m';
在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“_”的字符串'T_m'的操作效果。如下圖所示:
上圖中代碼執行的結果顯示,name字段中取值為Tom的記錄被查詢出來了。
“_”只能代表一個字符。如果字符串為“T_”,將不能查詢出結果。如下圖所示:
上圖中代碼執行的結果顯示,沒有查詢出任何記錄。因為name字段中不存在以“T”開頭,長度為2的記錄。
提示
需要匹配的字符串需要加引號,可以是單引號,也可以是雙引號。在MySQL 5.6.19版本中,使用一個“_”符號也可以代表一個漢字。如下圖所示:
如果使用一個“_”符號代表一個漢字時,不能正確查詢出記錄,則可以使用兩個“_” 符號來代表一個漢字,再查詢一下試試。畢竟,一般情況下,一個漢字是兩個字符,它需要兩個“_”符號來代表一個漢字。
使用LIKE關鍵字匹配帶有通配符“_”的字符串'_雪_'。SELECT語句的代碼如下:
SELECT * FROM employee WHERE name LIKE '_雪_';
在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“_”的字符串'_雪_'的操作效果。如下圖所示:
上圖中代碼執行的結果顯示,name字段中,中間一個漢字為“雪”的三個漢字的名字被查詢了出來。
NOT LIKE表示字符串不匹配的情況下符合條件。
實例4
使用NOT LIKE關鍵字查詢不是姓劉的所有人的記錄。SELECT語句的代碼如下:
SELECT * FROM employee WHERE name NOT LIKE "劉%";
在DOS提示符窗口中查看使用NOT LIKE關鍵字查詢不是姓劉的所有人的記錄的操作效果。如下圖所示:
上圖中代碼執行的結果顯示,name字段中取值為“劉兵”的記錄被排除出去了。
實例5
使用LIKE關鍵字匹配帶有通配符“%”的字符串'%軍'。SELECT語句的代碼如下:
SELECT * FROM employee WHERE name LIKE '%軍';
在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'%軍'的操作效果。如下圖所示:
上圖中代碼執行的結果顯示,name字段中最后一個字為“軍”的所有人的記錄被查詢了出來。
實例6
使用LIKE關鍵字匹配帶有通配符“%”的字符串'%雪%'。SELECT語句的代碼如下:
SELECT * FROM employee WHERE name LIKE '%雪%';
在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'%雪%'的操作效果。如下圖所示:
上圖中代碼執行的結果顯示,name字段中,中間任意位置為“雪”的人的名字的記錄都被查詢了出來。
提示
使用LIKE和NOT LIKE關鍵字可以很好匹配字符串。而且,可以使用“%”和“_”等通配符來簡化查詢。