在mysql中,有時我們在做數據庫查詢時,需要得到某字段中包含某個值的記錄,但是它也不是用like能解決的,使用like可能查到我們不想要的記錄,它比like更精准,這時候mysql的FIND_IN_SET函數就派上用場了,下面來具體了解一下。
FIND_IN_SET(str,strlist)函數
str 要查詢的字符串
strlist 字段名 參數以”,”分隔 如 (1,2,6,8)
查詢字段(strlist)中包含(str)的結果,返回結果為null或記錄
下面舉例說明
test表中有如下字段及值
下面我想查詢area中包含”1″這個參數的記錄
SELECT * from test where FIND_IN_SET('1',area)
返回值
下面查詢btype字段中包含”15″這個參數的值
SELECT * from test where FIND_IN_SET('15',btype)
返回值
下面查詢btype字段中包含”5″這個參數的值
SELECT * from test where FIND_IN_SET('5',btype)
返回值為null,因為btype中沒有”5”這個值,它不同於 like 模糊查詢,它是以“,”來分隔值
接下面查詢btype字段中包含”20″這個參數的值
SELECT * from test where FIND_IN_SET('20',btype)
當然它的返回值為null,因為字段中沒有這個值
FIND_IN_SET和like的區別
like是廣泛的模糊匹配,字符串中沒有分隔符,Find_IN_SET 是精確匹配,字段值以英文”,”分隔,Find_IN_SET查詢的結果要小於like查詢的結果。