下面的查询解析表中的一个文本列以获得"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"
一个更简单的例子是,如果我从一个表开始:
a | b | 文本//tr>|
---|---|---|
1 | 2 | xxx 453 yyy |
4 | 5 | www 453 www |
答案是:
WHERE "DATA"@>'[{"a":"4"}]'
请注意,如果您像我所做的那样尝试指定特定的元素,您将遇到问题。看起来jsonb中的元素是随机排序的,所以如果你(像我一样(搜索第一个元素,你可能会在每个查询中得到不同的答案。