mysql 拆分数组字符串
时间: 2023-06-30 15:22:06 浏览: 76
如果你的 MySQL 表中存在一个列,其存储了以逗号分隔的字符串,你可以使用 MySQL 的内置函数 `SUBSTRING_INDEX()` 和 `GROUP_CONCAT()` 来拆分这个字符串。
例如,如果你有一个名为 `users` 的表,其中有一个名为 `hobbies` 的列,存储了以逗号分隔的字符串,你可以使用以下查询来拆分这个字符串:
```
SELECT u.id, SUBSTRING_INDEX(SUBSTRING_INDEX(u.hobbies, ',', n.n), ',', -1) as hobby
FROM users u
CROSS JOIN (
SELECT a.N + b.N * 10 + 1 n
FROM
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a,
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
ORDER BY n
) n
WHERE n.n <= 1 + (LENGTH(u.hobbies) - LENGTH(REPLACE(u.hobbies, ',', ''))))
ORDER BY u.id, hobby;
```
这个查询将 `users` 表中的每个 `hobbies` 列拆分成一个单独的行,并将结果按照 `id` 和 `hobby` 排序。
注意:这个查询使用了一个子查询来生成一个数字序列,以便对字符串进行拆分。如果你知道你需要拆分的字符串的最大长度,你可以手动指定一个数字序列,而不必使用子查询。