将逗号分隔的字符串迁移到 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
我有一个旧数据库,其中一些列以逗号分隔的字符串存储如下 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