mysql中,like關鍵字可以判斷兩個字串是否相匹配,語法格式
select * |
from 表名
where 欄位名 [not] like 『匹配字串』;
not,可選引數,表示查詢與指定字串不匹配的記錄
匹配字串,指定用來匹配的字串,其值,可以是乙個普通字串,也可以是包含百分號%,和下劃線_的通配字串。
百分號和下劃線,統稱為萬用字元
匹配任意長度的字串,包括空字串,比如,字串「c%」匹配以字元c開始的任意長度的字串
查詢student表中,name字段值以字元s開頭的學生id
可以看出,返回的結果中name字段值,都是以字元s開頭
百分號萬用字元,可以出現在通配字串的任意位置
查詢student表中name字段值,以字元w開始,以字元g結束的學生id
可以看出,匹配的有兩條記錄
在通配字串中,可以出現多個百分號萬用字元
查詢student表中,name字段值包含字元「y」的學生id
可以看出,通配字串中字元「y」的前後,各有乙個百分號萬用字元,它匹配包含字元「y」的字串
like之前,可以使用not關鍵字,用來查詢與指定通配字串,不匹配的記錄
可以看出,查詢的結果正好相反
下劃線萬用字元,與百分號萬用字元不同
下劃線萬用字元,只匹配單個字元,如果要匹配多個字元,需要使用多個下劃線萬用字元。
比如 字串「cu_」匹配以字串「cu」開始,長度為3的字串
字串「cu__」匹配以字串「cu」開始,長度為4的字串
注意,如果使用多個下劃線,匹配多個連續的字串,下劃線之間不能有空格
查詢student表中,name字段值以字串「wu」開始,以字串「ong」結束,並且,兩個字串之間,只有乙個字元的記錄
可以看出,乙個下劃線,匹配了乙個字元
修改查詢條件,將匹配字串改為「wu_ng」,再次執行查詢語句
可以看出,返回記錄為空
查詢student表中,name字段值包含7個字元,並且,以字串「ing」結束的記錄
可以看出,萬用字元中使用了4個下劃線萬用字元
百分號和下劃線是萬用字元
如果,要匹配字串中的百分號和下劃線,需要在萬用字元中,使用右斜線「\」對百分號和下劃線,進行轉義
「\%」匹配百分號字面值
「_」匹配下劃線字面值
查詢student表中,name字段值包括「%」的記錄
首先,向student表中,插入一條記錄
可以看出,查詢出了name字段值為「sun%er」的記錄
MySQL優化之like關鍵字
無法使用索引了,開頭是不確定的,mysql也無法進行優化了,只能掃瞄表了。如果業務需要 就放開頭我們也沒辦法,一般情況需求都是這樣的,畢竟優化還是為業務服務的。建立復合索引idx name age select name,age from tb where name like e 查詢是覆蓋索引的,...
LIKE匹配關鍵字
1.匹配任意數目字元 包括零個字元 select from edo user where true name like 王 應用 關鍵字查詢 where u.true name like 2.匹配任何單個字元 select from edo user where true name like 王 應...
MySQL帶DISTINCT關鍵字的查詢
很多資料表中,某些欄位的資料存在重複的值 使用select語句,查詢gender欄位 可以看出,結果8條記錄中,有5條記錄的字段值為na,有2條記錄的值為nv。查詢student表中,gender欄位的值,查詢記錄不能重複 可以看出,查詢只返回了三條記錄的gender值,沒有重複值 有時候,出於對資...