首頁  >  文章  >  後端開發  >  PHP如何進行模糊查詢

PHP如何進行模糊查詢

醉折花枝作酒筹
醉折花枝作酒筹原創
2021-04-07 10:38:534870瀏覽

模糊查詢的方法:1、使用SQL匹配模式,操作符使用“LIKE”或“NOT LIKE”,匹配時,不區分大小寫;2、使用正規表示式匹配模式,而操作符使用“REGEXP”或“NOT REGEXP”,正規表示式可出現在符合欄位的任意位置。

PHP如何進行模糊查詢

本教學操作環境: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%';

#  PHP如何進行模糊查詢


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

     #%e

  SELECT * FROM user WHERE username LIKE '%eusername LIKE '%eusername LIKE '; 

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


    #查詢使用者名稱包含字元'o'的使用者

    # % o%

    SELECT * FROM user WHERE username LIKE '%o%';   (常用)


#   ④#查詢使用者名稱長度為30

   ④#查詢使用者名稱長度為3.的使用者  

      #___

      SELECT * FROM user WHERE username LIKE '___';



#⑤#兩種通配符的結合使用

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

   # _o%

   SELECT * FROM user WHERE username LIKE '_o%' ;

正規表示式符合模式(不建議使用)

通配符

            .  匹配任意單一字元

           *  配對任何單一字元

           *  符合0個或多個在它前面的字元

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

           [abc]符合字元a b或c

            [a-z ##

            [0-9]*符合任何數量的任何數字

            [a-z]*  搭配任何數量的字母## ##           ^a表示以字母a開頭

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

         則為$$$$$

         1使用的運算元 

REGEXP

 或

NOT REGEXP

(RLIKENOT 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn