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″這個引數的記錄

  1. SELECT * from test where FIND_IN_SET('1',area)

返回值

下面查詢btype欄位中包含”15″這個引數的值

  1. SELECT * from test where FIND_IN_SET('15',btype)

返回值

下面查詢btype欄位中包含”5″這個引數的值

  1. SELECT * from test where FIND_IN_SET('5',btype)

返回值為null,因為btype中沒有”5”這個值,它不同於 like 模糊查詢,它是以“,”來分隔值

接下面查詢btype欄位中包含”20″這個引數的值

  1. 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