假设有一张表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,并取它们的交集

mysql中将逗号拼接的字符串转集合并取交集

原文地址: http://www.cveoy.top/t/topic/gdbu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录