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

Migrate comma separated string to json array

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

我想将它们转换为 JSON 数组,因此我可以使用 MySQL JSON 数组类型和与之关联的方法。
所以基本上我正在寻找一种方法将 technician,director,website designer 转换为 SQL 中的 ["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

demo on dbfiddle.uk