【MySQL】FIND_IN_SET、LIKE、IN的區別


現在有張新聞表,里面有新聞名稱name字段,有新聞類型type字段,1代表頭條,2代表推薦,11代表熱點,22代表最新,現在表中有兩條記錄,存儲形式如下,現在的需求是查找頭條新聞,及type中包含1的:


LIKE函數

  可以看出,把包含11的數據也查出來了,因為它符合查詢條件,包含1,所以使用like就不滿足這種需求了

IN()函數

   這樣查詢的結果也不符合要求

  這樣查找的結果不符合預期, in 后面應該是真實的數據,只有 數組 在 in后面能找到才行, 不能用字段代替,這也是一大區別


FIND_IN_SET()函數

  可看出,准確查找出了type包含1的記錄,完全符合需求(沒有把包含11的記錄查詢出來)
【作用】

  FIND_IN_SET(‘str,’strList’),查找strList字段中包含str結果,返回null或記錄
【使用方法】

    返回值所在字段的索引位置,索引從1開始;如果沒有符合的值,返回0
    strList中間的值必須以,分隔
    當某個字段為NULL時,無論FIND_IN_SET()條件是何種查詢條件,字段有為NULL的記錄都符合

三者區別

    like是廣泛的模糊匹配,字符串中沒有分隔符
    IN 后面是變量,且是模糊查詢
    Find_IN_SET 是精確匹配,字段值必須以英文”,”分隔,Find_IN_SET查詢的結果要小於like查詢的結果
---------------------  
版權聲明:本文為CSDN博主「王如霜」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wrs120/article/details/81159585


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM