【发布时间】:2021-09-03 10:20:04
【问题描述】:
我想从 MySQL 中的嵌套 JSON 中提取数据,例如:
create table json_test (my_json json);
insert into json_test values ('{"outer_key": {"inner_key": "inner_value"} }');
mysql> select * from json_test;
+---------------------------------------------+
| my_json |
+---------------------------------------------+
| {"outer_key": {"inner_key": "inner_value"}} |
+---------------------------------------------+
我可以成功提取一层深层:
select my_json -> '$.outer_key' from json_test;
但我无法从我熟悉的 Postgres 中获得最深刻的价值:
select my_json -> '$.outer_key' -> '$.inner_key' from json_test; -- syntax error
select my_json -> '$.outer_key' ->> '$.inner_key' from json_test; -- syntax error
我想出了一个丑陋的解决方法:
mysql> with cte as (select my_json -> '$.outer_key' as cte_inner from json_test) select cte_inner -> '$.inner_key' from cte;
+----------------------------+
| cte_inner -> '$.inner_key' |
+----------------------------+
| "inner_value" |
+----------------------------+
但想知道是否有更简单的解决方案?
【问题讨论】: