gpt4 book ai didi

node.js - 检查 PostgreSQL v9.5+ 中的 jsonb 对象内部是否存在键

转载 作者:搜寻专家 更新时间:2023-10-31 23:30:36 24 4
gpt4 key购买 nike

我有一个简单的查询来检查 jsonb 对象中是否存在 key

SELECT data->$1 jdata FROM "my-scheme"."my-table"

我在这个查询中遇到了 2 个问题:

1) 如果我将 'foo' 作为 $1 传递,它会正常工作,但会因 "'foo'""而失败'foo'->'bar'”。所以我不知道如何达到深键。我使用 node-postgres

2) 我只想检查 key 是否存在,而不是通过该 key 获取所有数据。

所以问题是:如何在不通过该键获取所有数据的情况下检查键是否存在于 jsonb 对象深处?

最佳答案

您可以使用 #> 运算符提取特定路径(指定为键数组)的元素。

您还可以通过 ? 运算符检查顶层是否存在 key ,尽管似乎没有接受路径的任何变体。

所以这些中的任何一个都可以做到:

SELECT '{"a":{"b":{"c":1}}}'::jsonb #> '{a,b}' ? 'c'
SELECT '{"a":{"b":{"c":1}}}'::jsonb #> '{a,b,c}' IS NOT NULL

第二个可能更有效一些,因为它避免了在将运算符链接在一起时构造中间 jsonb 值。

关于node.js - 检查 PostgreSQL v9.5+ 中的 jsonb 对象内部是否存在键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749767/

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