gpt4 book ai didi

sql - PostgreSQL - 获取对象内的 JSONB 键/值对并返回它

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

此运算符 ?| 返回一个 bool 值。它只是检查字符串是否包含在字符串中。

SELECT ids ?| '{100085,100087,100090,100091,100093,100095,100113,
100121,100126,100211,100213,100223,100324,100326}'
FROM tableA

|ids|
{'100090':'123456789','100096':'987654321'}

这将返回 true 因为 id 100090 在 ids jsonb 列中。

问题是,有没有办法返回它找到的内容而不仅仅是一个 bool 值。而不是 true,返回它找到的匹配项的值,例如返回 '123456789'

最佳答案

一种可能性,有点复杂,但至少起作用并返回使用这些键找到的所有值。如果你只想要一个,那么需要一个限制:

SELECT * FROM 
(SELECT '{"100090":"123456789","100096":"987654321"}'::jsonb ->>
unnest('{100085,100087,100090,100091,100093,100095,100113,100121,100126,100211,100213,100223,100324,100326}'::int[])::text AS result) AS x
WHERE result IS NOT NULL;

结果:

  result
-----------
123456789
(1 row)

需要子选择,因为出于某种原因试图将 IS NOT NULL 添加到查询中,否则只会声明该列不存在。

关于sql - PostgreSQL - 获取对象内的 JSONB 键/值对并返回它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57130595/

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