(轉)MySQL數據表中帶LIKE的字符匹配查詢


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'的操作效果。如下圖所示:

查看使用LIKE關鍵字匹配一個完整的字符串'Tom'的操作效果

上圖中代碼執行的結果顯示,name字段中取值為Tom的記錄被查詢了出來。其它不符合條件的記錄都被過濾掉了。

在這里,LIKE與等於號(=)是等價的。如果修改為“=”,查詢結果是一樣的。如下圖所示:

LIKE與等於號(=)的查詢結果一樣

但是,上面的情況只對匹配一個完整的字符串有效,如果字符串中包含了通配符,就不能這樣進行替換了。


實例2

使用LIKE關鍵字匹配帶有通配符“%”的字符串'河南%'。SELECT語句的代碼如下:

SELECT * FROM employee WHERE homeaddress LIKE '河南%';

在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'河南%'的操作效果。如下圖所示:

查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'河南%'的操作效果

上圖中代碼執行的結果顯示,homeaddress字段以“河南”開頭的記錄都被查詢出來了。

如果使用“=”替換LIKE時,則查詢結果為空記錄。如下圖所示:

使用“=”替換LIKE時,則查詢結果為空記錄

上圖中代碼執行的結果顯示,沒有查詢出任何記錄。這說明字符串中包含了通配符時,“=”就不能代替LIKE了。


實例3

使用LIKE關鍵字匹配帶有通配符“_”的字符串'T_m'。SELECT語句的代碼如下:

SELECT * FROM employee WHERE name LIKE 'T_m';

在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“_”的字符串'T_m'的操作效果。如下圖所示:

查看使用LIKE關鍵字匹配帶有通配符“_”的字符串'T_m'的操作效果

上圖中代碼執行的結果顯示,name字段中取值為Tom的記錄被查詢出來了。

“_”只能代表一個字符。如果字符串為“T_”,將不能查詢出結果。如下圖所示:

沒有字符串為“T_”的記錄

上圖中代碼執行的結果顯示,沒有查詢出任何記錄。因為name字段中不存在以“T”開頭,長度為2的記錄。

提示

需要匹配的字符串需要加引號,可以是單引號,也可以是雙引號。在MySQL 5.6.19版本中,使用一個“_”符號也可以代表一個漢字。如下圖所示:

一個“_”符號也可以代表一個漢字

如果使用一個“_”符號代表一個漢字時,不能正確查詢出記錄,則可以使用兩個“_” 符號來代表一個漢字,再查詢一下試試。畢竟,一般情況下,一個漢字是兩個字符,它需要兩個“_”符號來代表一個漢字。

使用LIKE關鍵字匹配帶有通配符“_”的字符串'_雪_'。SELECT語句的代碼如下:

SELECT * FROM employee WHERE name LIKE '_雪_';

在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“_”的字符串'_雪_'的操作效果。如下圖所示:

查看使用LIKE關鍵字匹配帶有通配符“_”的字符串'_雪_'的操作效果

上圖中代碼執行的結果顯示,name字段中,中間一個漢字為“雪”的三個漢字的名字被查詢了出來。

NOT LIKE表示字符串不匹配的情況下符合條件。


實例4

使用NOT LIKE關鍵字查詢不是姓劉的所有人的記錄。SELECT語句的代碼如下:

SELECT * FROM employee WHERE name NOT LIKE "劉%";

在DOS提示符窗口中查看使用NOT LIKE關鍵字查詢不是姓劉的所有人的記錄的操作效果。如下圖所示:

查看使用NOT LIKE關鍵字查詢不是姓劉的所有人的記錄的操作效果

上圖中代碼執行的結果顯示,name字段中取值為“劉兵”的記錄被排除出去了。


實例5

使用LIKE關鍵字匹配帶有通配符“%”的字符串'%軍'。SELECT語句的代碼如下:

SELECT * FROM employee WHERE name LIKE '%軍';

在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'%軍'的操作效果。如下圖所示:

查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'%軍'的操作效果

上圖中代碼執行的結果顯示,name字段中最后一個字為“軍”的所有人的記錄被查詢了出來。


實例6

使用LIKE關鍵字匹配帶有通配符“%”的字符串'%雪%'。SELECT語句的代碼如下:

SELECT * FROM employee WHERE name LIKE '%雪%';

在DOS提示符窗口中查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'%雪%'的操作效果。如下圖所示:

查看使用LIKE關鍵字匹配帶有通配符“%”的字符串'%雪%'的操作效果

上圖中代碼執行的結果顯示,name字段中,中間任意位置為“雪”的人的名字的記錄都被查詢了出來。


提示

使用LIKE和NOT LIKE關鍵字可以很好匹配字符串。而且,可以使用“%”和“_”等通配符來簡化查詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM