gpt4 book ai didi

sql - 将 key 获取到 postgres 中的 JSON 字段

转载 作者:行者123 更新时间:2023-12-03 03:38:36 25 4
gpt4 key购买 nike

我在 Postgres 的 af 类型 jsonb 列中有这个 Json

{
"coreTimes": {
"TMP_CLINICAL_TIMES_ANESTHESIOLOGY_OUT_DATETIME": {
"value": 1
},
"TMP_CLINICAL_TIMES_ANESTHESIOLOGY_IN_DATETIME": {
"value": 2
},
"TMP_CLINICAL_TIMES_SURGICAL_OUT_DATETIME": {
"value": 3
},
"TMP_CLINICAL_TIMES_ROOM_IN_DATETIME": {
"value": 4
},
"TMP_CLINICAL_TIMES_ROOM_OUT_DATETIME": {
"value": null
},
"TMP_CLINICAL_TIMES_BLOCK_OUT_DATETIME": {
"value": null
},
"TMP_CLINICAL_TIMES_BLOCK_IN_DATETIME": {
"value": null
},
"TMP_CLINICAL_TIMES_SURGICAL_IN_DATETIME": {
"value": null
}
}
}

我需要这个结果:

Column
{"value":1}
{"value":2}
{"value":3}
{"value":4}
{"value":null}
{"value":null}
{"value":null}

如果 json 属性可以动态更改(键“coreTimes”是固定的),我可以使用什么 postgres 函数来获取此结果?

在oracle中我已经解决了

 SELECT res.*
FROM sopinterventionsaux ,
JSON_TABLE ( operating_times, '$.coreTimes.*'
COLUMNS (
value VARCHAR2 ( 2000 ) FORMAT JSON PATH '$'
)
) res

最佳答案

以下内容适用于 PostgreSQL 12 supports JSON path query

WITH T AS (SELECT $$
{
"coreTimes": {
"TMP_CLINICAL_TIMES_ANESTHESIOLOGY_OUT_DATETIME": {
"value": 1
},
"TMP_CLINICAL_TIMES_ANESTHESIOLOGY_IN_DATETIME": {
"value": 2
},
"TMP_CLINICAL_TIMES_SURGICAL_OUT_DATETIME": {
"value": 3
},
"TMP_CLINICAL_TIMES_ROOM_IN_DATETIME": {
"value": 4
},
"TMP_CLINICAL_TIMES_ROOM_OUT_DATETIME": {
"value": null
},
"TMP_CLINICAL_TIMES_BLOCK_OUT_DATETIME": {
"value": null
},
"TMP_CLINICAL_TIMES_BLOCK_IN_DATETIME": {
"value": null
},
"TMP_CLINICAL_TIMES_SURGICAL_IN_DATETIME": {
"value": null
}
}
}
$$::JSONB)
SELECT jsonb_path_query(jsonb, '$.coreTimes.*') FROM T;

jsonb_path_query
------------------
{"value": 4}
{"value": null}
{"value": null}
{"value": null}
{"value": null}
{"value": 3}
{"value": 2}
{"value": 1}
(8 rows)

关于sql - 将 key 获取到 postgres 中的 JSON 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59093040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com