sql - Postgres JSON:在不知道密钥的情况下获取第一个节点值
问题描述
我想在不知道密钥的情况下获取第一个节点值。
{"dog":"198","cat":"2835"}
我可以使用每行 1 个返回所有键,json_object_keys()
但我不想要这个,我只想要 json 中的第一个节点值。
我想回来198
我怎样才能做到这一点?
解决方案
WITH jsondata AS (
SELECT '{"dog":"198","cat":"2835"}'::json as data
)
SELECT
value
FROM jsondata, json_each_text(data)
LIMIT 1
json_each_text
将所有元素展开为一行,每行包含两列key
并value
作为类型text
(如果您愿意,可以将此文本转换为整数)LIMIT
输出到第一个
注意:通常 JSON 对象中没有“第一个”元素。元素的顺序不固定。对象
{"a":1, "b":2}
等于{"b":2, "a":1}
。因此,您可能会同时获得这两个值中的任何一个。它可能是完全随机的。例如,在这个小提琴中,我不是转换为 typejson
而是 type jsonb
。这给出了cat
. 所以这取决于内部状态,哪个被选为“第一个”。
推荐阅读
- vba - MS Access 自动填写表格不填写货币
- ruby - 期待与水豚的形象
- python - pip install private repo extras EnvironmentError
- html - 尝试在 Bootstrap3 中重新创建页面
- html - 绝对 URL 的 HTML 音频 src 在 React 组件中不起作用
- java - 用于 junit 测试的 Spring Boot 自定义属性
- ssh - ssh 连接将控制键显示为 ^P 或 ^A
- excel - 如何使用 Excel 中的“IF”函数替换缺失的收入数据?
- spring - 使用spring cloud gateway的redis速率限制,按分钟限制
- git - 将不同文件夹中的文件添加到 git repo