使用MySQL 8 json_table动态提取json键和嵌套值



我一直在尝试使用MySQL 8的JSON_TABLE来提取根键,然后提取它们的嵌套值。问题是根键是动态的,嵌套的键/值对可能不存在。

JSON:

{
"Foo": {
"A": 3
},
"Bar": {
"A": 1,
"B": 368
},
"Biz": {
"C": 2,
"D": 10
}
}

在这个JSON中,根密钥";Foo"Bar";,以及";Biz"是动态的,并且对于它们的每个对象;A";键的值,该值可能存在也可能不存在。例如,上面的代码将返回以下结果集:

json_keya_value
Foo3
条形图1
业务null
SELECT json_key,
JSON_EXTRACT(@json_value, CONCAT('$.', json_key, '.A')) a_value
FROM JSON_TABLE(JSON_KEYS(@json_value),
'$[*]' COLUMNS (json_key VARCHAR(255) PATH '$')) keystable

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=dd9c01e77d57206d587dd2d17340bc02

最新更新