下面的查询在键名以[& &]@type开头的地方失败。是否有一种方法来获取数据而不更新表中的Json键名。
SELECT JSON_ARRAYAGG(JSON_OBJECT (
'id',JSON_EXTRACT(INV_MASTER, "$[0].id[0]") ,
'href',JSON_EXTRACT(INV_MASTER, "$[0].href[0]"),
'@type',JSON_EXTRACT(INV_MASTER, "$[0].@type[0]"),
'entityChar',JSON_EXTRACT(INV_MASTER, "$[0].entityChar")
))
as MASTER from PROFILE;
这似乎是mysql不允许一些特殊字符在Json函数
没有这个问题。你使用了错误的JSON路径。
演示:
CREATE TABLE test (id INT, val JSON);
INSERT INTO test VALUES
(1, '[{"id":11, "@value":"value 1"}, {"id":111, "@value":"value 11"}]'),
(2, '[{"id":22, "@value":"value 2"}, {"id":222, "@value":"value 22"}]');
SELECT id, val->>'$[0]."@value"' value1, val->>'$[1]."@value"' value2
FROM test;
value2 价值22