php 模糊匹配 PHP模糊查詢的實現方法 推薦

2021-10-22 21:48:50 字數 1681 閱讀 1513

模式查詢

1. sql匹配模式

2. 正規表示式匹配模式(一般不推薦使用)

sql匹配模式

1.使用sql匹配模式,不能使用操作符=或!=,而是使用操作符like或not like;

2.使用sql匹配模式,mysql提供了2種萬用字元。

%表示任意數量的任意字元(其中包括0個)

_表示任意單個字元

3.使用sql匹配模式,如果匹配格式中不包含以上2種萬用字元中的任意乙個,其查詢的效果等同於=或!=

4.使用sql匹配模式,匹配時,不區分大小寫

#查詢使用者名稱以某個字元開頭的使用者

#查詢使用者名稱以字元"l"開頭的使用者: l%

select * from user where username like "l%";

#查詢使用者名稱以某個字元結尾的使用者

#查詢使用者名稱以字元"e"結尾的使用者:e%

select * from user where username like "e%";

#查詢使用者名稱包含某個字元的使用者

#查詢使用者名稱包含字元"o"的使用者:%o%

select * from user where username like "%o%";

#查詢包含三個字元的使用者

select * from user where username like "___";

#查詢使用者名稱第二個字元為o的使用者:_o%

select * from user where username like "_o%";

正規表示式匹配模式

萬用字元(正規表示式)

.匹配任意的單個字元

*匹配0個或多個在它前面的字元

x*表示匹配任何數量的x字元

[..]匹配中括號中的任意字元

[abc]匹配字元ab或c

[a-z]匹配任意字母

[0-9]匹配任意數字

[0-9]*匹配任意數量的任何數字

[a-z]*匹配任何數量的字母

^表示以某個字元或字串開始

^a 表示以字母a開頭

$表示以某個字元或字串結尾

s$表示以字母s結尾

使用正規表示式匹配模式使用的操作符是:

regexp 或 not regexp(rlike 或 not rlike)

注意:正規表示式匹配模式,其正規表示式出現在匹配欄位的任意位置,

其模式就算匹配了,不必在兩側放乙個萬用字元來使得其匹配;

如果僅用萬用字元 . 來匹配,假設n個,那麼其匹配模式表示,大於等於n個;

怎麼理解上面這句話呢?

就是說...   匹配大於等於3個字元的資料

....  匹配大於等於4個字元的資料

#查詢使用者名稱以字元 l開頭的使用者:^l;

#正規表示式寫法

select * from user where username regexp "^l";

#sql匹配模式寫法:

select * from user where username like "l%";

#查詢使用者名稱正好是三個字元的使用者:^...$;

#sql匹配模式寫法:

select * from user where username like "___";

#正規表示式寫法

select * from user where username regexp "^...$";

PHP的模糊查詢

以上為模糊查詢的流程圖。為了方便演示,需要建立乙個簡單地資料庫表。key username username 是索引,非常重要。索引的好處 如果按照某個條件去檢索資料,如果這個條件字段沒有建立索引,查詢的時候會遍歷整張表,如果你建立了索引,查詢的時候就會根據索引來查詢,進而提高查詢效能。精確查詢 返...

php 陣列模糊查詢

乙個陣列中有多個值,現在需要輸入某個字串,要模糊查詢出所有帶有這個字串的陣列中的值,該如何實現呢?看例子 keywords dd arrays array 0 db aabbccddee 1 aabbccdd 2 aaa 3 aabb 4 aabbcc 5 aabbccddeeff arr arra...

揭秘PHP模糊查詢技術

使用者表 user create table user uid int 10 auto increment primary key comment 使用者id username varchar 30 not null default comment 使用者名稱 password varchar 6 ...