mysql - 如何从列的逗号分隔值中查找子部分并在 mysql 中插入新行?
问题描述
问题:
在数据库表中,一列很少有逗号分隔值,想通过mysql查询找到字符串并插入新行。
示例表结构:
| 标识值 | | 1 abcd | | 2 xyz,123,abcd |
输出将是
| 标识值 | | 1 abcd | | 2 xyz | | 3 123 | | 4 abcd |
注意:id 是自动递增的。Mysql 5.7 版不知道怎么做。
提前致谢。
解决方案
您可以构建查询以返回数字。
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 排除它,或者将数字与初始字符串包含的逗号数量进行比较
推荐阅读
- r - R:如果它等于某个数字,如何不在 ggplot() 中绘制一个点?
- java - 尝试仅将素数打印到输出文件中
- excel - 如果范围 1 中的数字存在于范围 2 中,则 Excel 条件格式
- python - 如何添加旋转以查找逆
- laravel - Laravel 419 错误 > 元素 UI 文件上传 Vue Js 组件
- python - 如何根据字典的第一个和第二个值对字典进行排序?
- javascript - 使用键获取 Handlebars 中对象的值
- api - 从 UPS 收到奇怪的 ZPL 代码(如何解码此 ZPL 代码?)
- javascript - 无法调用 `data`,因为 `TestObject` [1] 中缺少可调用签名
- r - 无法使用 rpivotTable 从 ShinyApp 将数据透视表输出保存为 excel / csv