gpt4 book ai didi

json - Postgres 10,从包含json对象数组的json对象中选择

转载 作者:行者123 更新时间:2023-11-29 13:11:59 24 4
gpt4 key购买 nike

在数据库中,我的文本字段包含具有以下结构的 json:

"Limits":{
"fields":[
{
"key":"DAILY_LIMIT",
"value":"1559",
"lastModified":1543857829148,
},
{
"key":"MONTHLY_LIMIT",
"value":"25590",
"lastModified":1543857829148,
}
]
}

我需要检查 daily_limit 是否存在。使用 LIKE %DAILY_LIMIT% 很容易做到,但性能不是很好,而且我也无法获得值(value)(现在我不需要它,但也许将来会需要它)。有一个选项可以在不杀死数据库的情况下检查这个 key 是否存在?我试过 'Limits'->'fields'-> 但我不知道下一步应该是什么......而且它必须通过查询完成,我不能将对象传递到后端然后检查它

最佳答案

demo: db<>fiddle

如果你想用 JSON 的方式来做这可能是一个解决方案:

WITH data AS (
SELECT 'somedata' as somedata, '{"Limits":{"fields":[{"key":"DAILY_LIMITS","value":"1559","lastModified":1543857829148},{"key":"MONTHLY_LIMIT","value":"25590","lastModified":1543857829148}]}}'::jsonb as data
)
SELECT
d.*
FROM data d, jsonb_array_elements(data -> 'Limits' -> 'fields')
WHERE value ->> 'key' = 'DAILY_LIMITS'

jsonb_array_elements 将数组扩展为每个元素一行。在下一步中,您可以检查 key 的值。

但演示显示,一个简单的 LIKE 会比正确提到的 @404 快得多(看看这两个示例的成本。)

关于json - Postgres 10,从包含json对象数组的json对象中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53599533/

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