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

PostgreSQL-在对象内获取JSONB键/值对并返回它,sql,postgresql,jsonb,Sql,Postgresql,Jsonb,此运算符?|返回布尔值。它只是检查字符串是否包含在字符串中 SELECT ids ?| '{100085,100087,100090,100091,100093,100095,100113, 100121,100126,100211,100213,100223,100324,100326}' FROM tableA |ids| {'100090':'123456789','100096':'987654321'} 它将返回true,因为id100090位于idsjsonb列中 问题是,有没

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

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
位于idsjsonb列中


问题是,有没有一种方法可以返回它找到的内容,而不仅仅是一个布尔值。返回它找到的匹配项的值,而不是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添加到查询中,否则只会声明该列不存在。

实际上,不必介意最后一个问题,它会按照我的需要工作。谢谢你。我什么都试过了。它可以是bigint而不是将其转换为文本吗?我试过了,但结果却是空列。