在mysql中,有時我們在做資料庫查詢時,需要得到某欄位中包含某個值的記錄,但是它也不是用like能解決的,使用like可能查到我們不想要的記錄,它比like更精準,這時候mysql的FIND_IN_SET函數就派上用場了,下麵來具體瞭解一下。 FIND_IN_SET(str,strlist)函數 ...
在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查詢的結果。
轉載自:http://www.devdo.net/mysql-find_in_set.html