MySQL 逗号拼接字符串转集合并取交集
假设有一张表 t,其中有一个字段 field 为逗号拼接的字符串,我们要将这些字符串转化为集合并取交集。
首先需要使用 MySQL 内置函数 SUBSTRING_INDEX(),将逗号拼接的字符串拆分成多个字符串。例如:
SELECT SUBSTRING_INDEX(field,',',1) AS str1,
SUBSTRING_INDEX(SUBSTRING_INDEX(field,',',2),',',-1) AS str2,
SUBSTRING_INDEX(SUBSTRING_INDEX(field,',',3),',',-1) AS str3
FROM t
上面的查询语句将逗号拼接的字符串拆分成 3 个部分,存储在 str1、str2、str3 三个字段中。
接着使用 MySQL 内置函数 FIND_IN_SET(),判断某个值是否在集合中。例如:
SELECT *
FROM t
WHERE FIND_IN_SET('value1',field) AND FIND_IN_SET('value2',field) AND FIND_IN_SET('value3',field)
上面的查询语句将筛选出 field 字段中包含 'value1'、'value2'、'value3' 的记录。
最后,如果需要将多条记录的 field 字段合并成一个集合并取交集,可以使用 GROUP_CONCAT() 和 INTERSECT 操作符。例如:
SELECT GROUP_CONCAT(field) AS set1
FROM t
WHERE condition1
INTERSECT
SELECT GROUP_CONCAT(field) AS set2
FROM t
WHERE condition2
上面的查询语句将根据条件 condition1 和 condition2 将多个 field 字段合并成两个集合 set1 和 set2,并取它们的交集。
原文地址: https://www.cveoy.top/t/topic/ot2C 著作权归作者所有。请勿转载和采集!