【问题标题】:Migrate comma separated string to json array将逗号分隔的字符串迁移到 json 数组
【发布时间】:2020-01-03 10:17:20
【问题描述】:

我有一个旧数据库,其中一些列有逗号分隔的字符串,像这样technician,director,website designer

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

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

解决方案应该是 MySQL 5.7。

【问题讨论】:

    标签: mysql database mariadb data-migration mysql-5.7


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 不错!简单的解决方法,没想到。我有一个无效的条目,因为它有一个“,但是,我只是添加了一个替换来逃避它。
    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2012-10-30
    相关资源
    最近更新 更多