postgres如何过滤jsonb_agg()的结果



下面的查询解析表中的一个文本列以获得"PO"值。然后,它返回一个包含两列的表——"PO"one_answers"DATA",其中每个单元格基本上都包含作为JSONB对象的所有行数据:

select POed."PO", jsonb_agg(to_jsonb(POed)- 'PO') as "DATA"
from (
select  * , 
(case 
when patd."Text" notnull
then (regexp_match(patd."Text" , '^[0-9]{10}00'))[1]
else null
end) as "PO"
from "pat_details" patd
) as POed
group by "PO"

一个更简单的例子是,如果我从一个表开始:

文本//tr>
ab
12xxx 453 yyy
45www 453 www

答案是:

WHERE "DATA"@>'[{"a":"4"}]'

请注意,如果您像我所做的那样尝试指定特定的元素,您将遇到问题。看起来jsonb中的元素是随机排序的,所以如果你(像我一样(搜索第一个元素,你可能会在每个查询中得到不同的答案。

最新更新