簡體   English   中英

PostgreSQL - 在對象中獲取 JSONB 鍵/值對並返回它

[英]PostgreSQL - Get JSONB key/value pair inside object and return it

這個運算符?| 返回一個布爾值。 它只是檢查字符串是否包含在字符串中。

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 列中。

問題是,有沒有辦法返回它找到的內容而不僅僅是一個布爾值。 返回它找到的匹配值,而不是 true,例如 return '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 添加到查詢中,否則只會聲稱該列不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM