我使用外部脚本将数据从一个表传输到另一个表。该表的其中一列是json类型的名为permissions
的列,其中包含各种权限的数组。
在新表中,所有数组都被误编码为字符串而不是数组。
例如,我看到的是"[\"ANALYZE\", \"MANAGE\"]"
而不是["ANALYZE", "MANAGE"]
的值。
当然,现在所有试图读取列值就像是数组的查询都将被破坏。
是否可以通过MySQL查询解决此问题,以将数据规范化为应有的形式?
我尝试过此方法,但是它不影响任何行,当然,它还必须与每个列上的数组中元素的顺序完全匹配,这是不准确的:
UPDATE accounts SET permissions = '["ANALYZE", "MANAGE"]' WHERE permissions = '[\\"ANALYZE\\", \\"MANAGE\\"]';
纠正这种混乱的正确方法是什么?
答案 0 :(得分:1)
通过运行以下查询解决此问题:
UPDATE accounts SET permissions = JSON_UNQUOTE(permissions) WHERE permissions like '"[%';