MySQL是開源數(shù)據(jù)庫(kù)管理系統(tǒng),在語法和功能上比較強(qiáng)大。有時(shí)我們需要查詢一個(gè)字段是否包含在給定的集合中,這時(shí)可以使用MySQL一些內(nèi)置函數(shù)來實(shí)現(xiàn)。
其中IN和FIND_IN_SET兩個(gè)函數(shù)是MySQL非常常用的判斷字段是否在集合中的函數(shù),具體用法及區(qū)別如下:
SELECT * FROM `table` WHERE `column` IN ('value1', 'value2', 'value3');
IN函數(shù)表示判斷某字段的值是否在給定的一個(gè)或多個(gè)集合中,類似于SQL中的OR語法。如果該字段的值等于給定集合中的其中一個(gè)值,則該記錄將被返回。
SELECT * FROM `table` WHERE FIND_IN_SET(`column`, 'value1,value2,value3') >0;
FIND_IN_SET函數(shù)是判斷某個(gè)字段值是否在給定的集合中的一個(gè)更高級(jí)的函數(shù)。與IN函數(shù)不同,F(xiàn)IND_IN_SET函數(shù)把給定集合的多個(gè)值作為一個(gè)字符串傳入,這些值之間用逗號(hào)分隔,其返回的是查詢記錄中給定的字段值在集合中的位置,如果該值不在集合中,返回值為0。
以上兩個(gè)查詢語句用法不同,可以根據(jù)實(shí)際情況選擇使用。