1. 程式人生 > >php模糊查詢的實現方法

php模糊查詢的實現方法

模糊檢索

指搜尋系統自動按照使用者輸入關鍵詞的同義詞進行模糊檢索,從而得出較多的檢索結果。

模式查詢

1. SQL匹配模式

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

SQL匹配模式

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

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

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

_表示任意單個字元

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

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

1 2 3 4 5 6 7 8 9 10 11 12 13 #查詢使用者名稱以某個字元開頭的使用者 #查詢使用者名稱以字元'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;
#正則表示式寫法

1 2 3 4 5 6 7 8 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 '^...$';