如何从MYSQL Json中提取数据,关键名以@开头?



下面的查询在键名以[& &]@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

最新更新