json - 在 Postgres 11 数据库中展平类似 JSON 的数据
问题描述
我在 Postgres 表中有以下数据需要展平:
data
===============================================================================================
{"Exterior Lights" :["Headlights - Forward Adaptive","Headlights - Laser","Headlights - LED"]}
{"Generic" : ["Launch Control"]}
{"Mirror" :["Blind Spot Assistant","Door Mirrors - Integrated LED"]}
{"Safety" :["Tyre Pressure Monitoring", "ABS"]}
理想情况下,上面的数据看起来像这样:
System Type
======= ====
Exterior Lights Headlights - Forward Adaptive
Exterior Lights Headlights - Laser
Exterior Lights headlights - LED
Generic Launch Control
Mirror Blind Spot Assistant
Mirror Door Mirror - Integrated LED
Safety Tyre Pressure Monitor
Safety ABS
我尝试了 JSON 运算符的各种组合,但无济于事。任何人都可以帮忙吗?
解决方案
您需要首先将键/值对提取为行,这可以使用jsonb_each()
. 然后您可以使用jsonb_array_elements_text()
为每个数组元素创建一行:
select x.system, u.type
from the_table t
cross join jsonb_each(t.data) as x(system, value)
cross join jsonb_array_elements_text(x.value) as u(type);
推荐阅读
- android - Kotlin 比较按钮背景颜色
- nginx - 有没有办法在 Nginx 中启用/设置 ESNI?
- java - 手动缓存 Rest 而不检查 ETag 和 Last-Modified 的标头
- java - 我收到“启动 ApplicationContext 时出错。要显示条件报告,请在启用了 'debug' 的情况下重新运行您的应用程序。” 解决方案?
- c++ - 关于构造函数匹配和隐式转换的问题
- python - 自定义损失函数的反向传播问题
- swift - 如何快速将 URL 分配给 imageView?
- c++ - 检查概念中的 constexpr
- python - 用两个相等的列连接两个df pandas python
- c# - 使用 postgresql 整数 [] 数组与 linq 进行内部连接