Postgres 9.6.1
CREATE TABLE "public"."test" ( "id" int4 NOT NULL, "packet" jsonb, ) WITH (OIDS=FALSE) ;
Jsonb
{"1": {"end": 14876555, "quantity":10}, "2": {"end": 14876555, "quantity":10} }
或
[{"op": 1, "end": 14876555, "quantity": 10}, {"op": 2, "end": 14876555, "quantity": 20}]
所有检索数组的尝试都会导致错误: 无法从对象中提取元素
有必要比较所有元素" end" < 1490000并找到id。
" op":1或" 1":变量值和完整路径不适合解决方案
答案 0 :(得分:0)
如果您没有商定的JSON结构,最好的解决方案IMO就像
select *
from
public.test,
regexp_matches(packet::text, '"end":\s*(\d+)', 'g') as e(x)
where
x[1]::numeric < 1490000;