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,并取它们的交集
原文地址: http://www.cveoy.top/t/topic/gdbu 著作权归作者所有。请勿转载和采集!