首页 > 解决方案 > 如何从列的逗号分隔值中查找子部分并在 mysql 中插入新行?

问题描述

问题:

在数据库表中,一列很少有逗号分隔值,想通过mysql查询找到字符串并插入新行。

示例表结构:

| 标识值 |
| 1 abcd |
| 2 xyz,123,abcd |

输出将是

| 标识值 |
| 1 abcd |
| 2 xyz |
| 3 123 |
| 4 abcd |

注意:id 是自动递增的。Mysql 5.7 版不知道怎么做。

提前致谢。

标签: mysqllogic

解决方案


您可以构建查询以返回数字。

SELECT 1 AS a UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 UNION SELECT 0

您可以多次加入它以返回更大范围的数字。

然后,您可以将结果与您的第一个表连接起来,并使用带有 SUBSTRING_INDEX 的数字,查找逗号和前一个逗号。只需将该值插入第二张表即可。

做了几次。

需要注意的事项:-

你的号码范围就足够了。

最后一个值很可能会重复。您可以使用 DISTINCT 排除它,或者将数字与初始字符串包含的逗号数量进行比较


推荐阅读