将逗号分隔的字符串迁移到 json 数组

Oli*_*roe 4 mysql database data-migration mariadb mysql-5.7

我有一个旧数据库,其中某些列存储有逗号分隔的字符串,如下所示technician,director,website designer

我想将它们转换为 JSON 数组,因此我可以使用 MySQL JSON 数组类型及其关联的方法。
所以基本上我正在寻找一种在 SQL 中转换的technician,director,website designer方法["technician","director","website designer"]

列表的长度是任意的。我遇到的最大的困难是如何对逗号分隔字符串中的每个元素应用 SQL 函数(例如,我可以在JSON_QUOTE()每个元素上运行),因为添加括号只是一个简单的CONCAT.

解决方案应该适用于 MySQL 5.7。

Seb*_*sch 9

您可以使用REPLACE来获取预期的字符串:

SELECT CONCAT('["', REPLACE('technician,director,website designer', ',', '","'), '"]')
-- ["technician","director","website designer"]
Run Code Online (Sandbox Code Playgroud)

使用JSON_VALID您可以检查转换结果是否是有效的 JSON 值:

SELECT JSON_VALID(CONCAT('["', REPLACE('technician,director,website designer', ',', '","'), '"]'))
-- 1
Run Code Online (Sandbox Code Playgroud)

dbfiddle.uk 上的演示