mysql - 将逗号分隔的字符串迁移到 json 数组
问题描述
我有一个旧数据库,其中一些列有逗号分隔的字符串,像这样存储technician,director,website designer
我想将它们转换为 JSON 数组,因此我可以使用 MySQL JSON 数组类型和与之关联的方法。
所以基本上我正在寻找一种在 SQL 中转换technician,director,website designer
为的方法。["technician","director","website designer"]
列表的长度是任意的。我遇到的最大难题是如何在逗号分隔的字符串中的每个元素上应用 SQL 函数(例如,我可以JSON_QUOTE()
在每个元素上运行),因为添加括号只是一个简单的CONCAT
.
解决方案应该适用于 MySQL 5.7。
解决方案
您可以使用REPLACE
来获取预期的字符串:
SELECT CONCAT('["', REPLACE('technician,director,website designer', ',', '","'), '"]')
-- ["technician","director","website designer"]
使用JSON_VALID
您可以检查转换结果是否是有效的 JSON 值:
SELECT JSON_VALID(CONCAT('["', REPLACE('technician,director,website designer', ',', '","'), '"]'))
-- 1
推荐阅读
- python - 康托尔集代码没有给出预期的输出
- android - 使用 Ionic 4 和 Capacitor 构建时创建的 APK 文件在哪里?
- javascript - Gulp:错误:未处理的“错误”事件。(1)当phpunit测试失败时
- python - 如何使用 Amplify React 在 Python 中的 Post Confirmation Lambda Trigger 中获取 Cognito Identity Id?
- reactjs - React async / await 不在调用函数中等待 - 但被调用函数正在正确执行
- java - Java 多播:如何在 localhost 上进行测试?
- swift - 在 Vapor 3 中返回部分对象
- android - 将android java项目转换为android kotlin项目
- javascript - 两个类似的 SQLite 案例语句,一个有效,另一个无效
- bash - 为什么这个 docker shell 命令不起作用