模糊查詢的方法:1、使用SQL匹配模式,操作符使用“LIKE”或“NOT LIKE”,匹配時,不區分大小寫;2、使用正規表示式匹配模式,而操作符使用“REGEXP”或“NOT REGEXP”,正規表示式可出現在符合欄位的任意位置。
本教學操作環境:windows7系統、PHP7.1&&mysql8版本、Dell G3電腦。
在建置網站的時候,常常會使用到使用關鍵字來尋找網站某些資源的這個功能,這時候我們往往需要用到模糊查詢。今天學習了一下PHP的模糊查詢,現在來總結一下。
以上為模糊查詢的流程圖。
為了方便演示,需要建立一個簡單地資料庫表。
KEY ‘username’(‘username’)
是索引,非常重要。
索引的好處:如果按照某個條件去檢索數據,如果這個條件欄位沒有建立索引,查詢的時候會遍歷整張表,如果你建立了索引,查詢的時候就會根據索引來查詢,進而提升查詢效能。
傳回結果有且僅有一條SQL查詢
應用程式場景:使用者註冊 登陸
注意:以上2種查詢傳回的結果可能為空。
模糊查詢技術支援2種匹配格式: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 '%eusername LIKE '%eusername LIKE ';
③#查詢使用者名稱包含某個字元的使用者
#查詢使用者名稱包含字元'o'的使用者
# % o%
SELECT * FROM user WHERE username LIKE '%o%'; (常用)
# ④#查詢使用者名稱長度為30
#⑤#兩種通配符的結合使用
正規表示式符合模式(不建議使用)
## [. .] 匹配中括號的任意字元
[abc]符合字元a b或c
[a-z ##
[0-9]*符合任何數量的任何數字
[a-z]* 搭配任何數量的字母## ## ^a表示以字母a開頭
$ 表示以某個字元或字串結尾
則為$$$$$
1使用的運算元
REGEXP或
NOT REGEXP(RLIKE
或NOT RLIKE
#)#如果使用正規表示式來匹配,則其模式有別於SQL模式
解釋:如以下範例
#查詢使用者名稱以字元l 開頭的使用者
SQL匹配模式 l%
正規表示式 ^l
# SELECT * FROM user WHERE username REGEXP '^l';
####################################################################################################################### ##查詢使用者名稱剛好是3個字元的使用者######### SQL符合模式 ___###### 正規表示式 ... ?是這樣嗎###### SELECT * FROM user FROM username WHERE username REGEXP '...';##################為什麼把所有的使用者都查詢出來了?因為正規表示式匹配模式,其正規表示式出現在符合欄位的任何位置,其模式就算匹配了。所以 ... 匹配的是 包含三個字母或以上的用戶名,而表中的所有用戶名都匹配,所以所有用戶都被查詢出來了。 #########注意:###如果只用萬用字元 . 來匹配,有N個萬用字元. 那麼其匹配模式表示,大於等於N個字元。若想表示精確字元數,其格式如下:^...$######SELECT * FROM user WHERE username REGEXP '^...$';############# ##推薦學習:###php影片教學#######
以上是PHP如何進行模糊查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!