Mysql的FIND_IN_SET的使用
背景:查詢參展展會(huì)中所有的產(chǎn)品的名稱蜒简,參展展會(huì)表存儲(chǔ)的產(chǎn)品id product以","分割蚤氏;
參展展會(huì)表
id
name
product(存儲(chǔ)id","分割 例如:1,2,3)
測(cè)試數(shù)據(jù):
1 張三 1,2,3
2 李四 2,3
產(chǎn)品表
id
name
測(cè)試數(shù)據(jù):
1 液態(tài)食品包裝、灌裝設(shè)備及技術(shù)
2 自動(dòng)化扰她、控制系統(tǒng)及檢測(cè)設(shè)備
3 后段包裝設(shè)備及技術(shù)
4 PET設(shè)備及技術(shù)
查詢思路:
1.現(xiàn)將產(chǎn)品按照id在'1,2,4'集合中查詢出來(lái)
SELECT p.name FROM dict_product p WHERE FIND_IN_SET(p.id,'1,2,4')
2.查詢返回的是多個(gè)值使用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手冊(cè)中find_in_set函數(shù)的語(yǔ)法:
FIND_IN_SET(str,strlist)
str 要查詢的字符串
strlist 字段名 參數(shù)以”,”分隔 如 (1,2,6,8)
查詢字段(strlist)中包含(str)的結(jié)果兽掰,返回結(jié)果為null或記錄
假如字符串str在由N個(gè)子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間徒役。 一個(gè)字符串列表就是一個(gè)由一些被 ‘,’ 符號(hào)分開的子鏈組成的字符串孽尽。如果第一個(gè)參數(shù)是一個(gè)常數(shù)字符串,而第二個(gè)是type SET列忧勿,則FIND_IN_SET() 函數(shù)被優(yōu)化杉女,使用比特計(jì)算。 如果str不在strlist 或strlist 為空字符串鸳吸,則返回值為 0 宠纯。如任意一個(gè)參數(shù)為NULL,則返回值為 NULL层释。這個(gè)函數(shù)在第一個(gè)參數(shù)包含一個(gè)逗號(hào)(‘,’)時(shí)將無(wú)法正常運(yùn)行。