gpt4 book ai didi

sql - 如何查询 PostgreSQL 9.5 JSONB 列中是否存在某个键?

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

我有一个 PostgreSQL 9.5 数据库表,其中有一个名为 attrs 的 JSONB 列。我想检查该 attires 列中是否存在特定键。我想我可以使用?运算符,但我不明白语法。

SELECT * FROM cereal WHERE attrs ? 'lbs';

这将返回,“注意参数的数量 < 参数标记的数量。”

SELECT * FROM cereal WHERE attrs ? | ARRAY['lbs'];

这将返回,“注意参数的数量 < 参数标记的数量。”

如何查询 JSONB 列中是否存在键?

最佳答案

您实际上已经找到了您的第一个查询。

? 运算符的局限性在于它仅检查 jsonb 值的顶级键。因此,您要查找的 key 很可能深埋在 JSON 文档中的某处。您可以使用多个 jsonb 运算符或处理函数来向下钻取键应该位于的位置,然后进行测试:->, # >jsonb_each()jsonb_array_elements() 等。因此,您使用其中任何一个并对结果运行 ? 运算符,例如:

SELECT *
FROM cereal
WHERE (attrs -> 'weight') ? 'lbs';

...对于像这样的 JSON 文档:

{"ingredients": {...}, "weight": {"lbs": 4, "kg": 1.8}, ...}

如果不了解 JSON 文档的结构,您将无法获得更具体的答案。

关于sql - 如何查询 PostgreSQL 9.5 JSONB 列中是否存在某个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35077818/

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