Mysql的FIND_IN_SET的使用

Mysql的FIND_IN_SET的使用

背景:查詢參展展會中所有的產(chǎn)品的名稱,參展展會表存儲的產(chǎn)品id product以","分割;
參展展會表
id
name
product(存儲id","分割 例如:1,2,3)

測試數(shù)據(jù):
1 張三 1,2,3
2 李四 2,3
產(chǎn)品表
id
name

測試數(shù)據(jù):
1 液態(tài)食品包裝、灌裝設(shè)備及技術(shù)
2 自動化、控制系統(tǒng)及檢測設(shè)備
3 后段包裝設(shè)備及技術(shù)
4 PET設(shè)備及技術(shù)
查詢思路:
1.現(xiàn)將產(chǎn)品按照id在'1,2,4'集合中查詢出來

 SELECT p.name FROM dict_product p WHERE FIND_IN_SET(p.id,'1,2,4')

2.查詢返回的是多個值使用GROUP_CONCAT合成一條

 SELECT
    e.companyname,
    (
        SELECT
            GROUP_CONCAT(p. NAME)
        FROM
            dict_product p
        WHERE
            FIND_IN_SET(p.id, e.product)
    ) as product
FROM
    join_exhibition e

FIND_IN_SET(str,strlist)

MySQL手冊中find_in_set函數(shù)的語法:
FIND_IN_SET(str,strlist)

str 要查詢的字符串
strlist 字段名 參數(shù)以”,”分隔 如 (1,2,6,8)
查詢字段(strlist)中包含(str)的結(jié)果,返回結(jié)果為null或記錄

假如字符串str在由N個子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間。 一個字符串列表就是一個由一些被 ‘,’ 符號分開的子鏈組成的字符串。如果第一個參數(shù)是一個常數(shù)字符串,而第二個是type SET列,則FIND_IN_SET() 函數(shù)被優(yōu)化,使用比特計算。 如果str不在strlist 或strlist 為空字符串,則返回值為 0 。如任意一個參數(shù)為NULL,則返回值為 NULL。這個函數(shù)在第一個參數(shù)包含一個逗號(‘,’)時將無法正常運行。

補充:有點類似in。。。。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容