sql - PostgreSQL 获取 json 作为记录
问题描述
我希望能够获得一个 json 对象作为记录。
SELECT select row_number() OVER () AS gid, feature->'properties' FROM dataset
此查询的输出如下所示:
吉德 | ?柱子?json |
---|---|
1 | {"a": "1", "b":"2", "c": "3"} |
2 | {"a": "3", "b":"2", "c": "1"} |
3 | {"a": "1"} |
期望的结果:
吉德 | 一个 | b | C |
---|---|---|---|
1 | 1 | 2 | 3 |
2 | 3 | 2 | 1 |
3 | 1 | 无效的 | 无效的 |
我不能使用 json_to_record 因为我不知道字段的数量。但是,我所有的字段都是文本。
解决方案
没有通用的方法可以做到这一点,因为在查询解析时必须知道列的数量、类型和名称。所以你必须这样做:
SELECT row_number() OVER () AS gid,
CAST(feature #>> '{properties,a}' AS integer) AS a,
CAST(feature #>> '{properties,b}' AS integer) AS b,
CAST(feature #>> '{properties,c}' AS integer) AS c
FROM dataset;
本质上,您必须提前知道列并在查询中对它们进行硬编码。
推荐阅读
- amazon-web-services - 从另一个 lambda 调用 AWS Lambda,子 lambda 立即停止
- git - “git check-ignore *”和“git ls-files --other --ignored --exclude-standard”有什么区别?
- iis - !runaway error: 无法获取进程信息,6
- javascript - 如何使用 Cheerio 获取 javascript 变量
- excel - Excel 不断在我的 CSV 文件中更改我的文本值
- java - 指定 hibernate.multi_tenant_connection_provider 而不使用反射
- python - 如何在pytorch中为nn.Transformer编写一个前向钩子函数?
- javascript - JSON.stringify 仅键值
- javascript - $(this) 在我的 jQuery 点击函数中不起作用
- powershell - Powershell = New-ScheduledTaskTrigger 无法在变量中传递值