現在有張新聞表,里面有新聞名稱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