假设有一张表 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 逗号拼接字符串转集合并取交集

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

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