MySQL帶LIKE關鍵字的查詢

2021-08-03 14:17:42 字數 1718 閱讀 1695

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值,沒有重複值 有時候,出於對資...