我在Postgres 9.4中有下一张表
CREATE TABLE public.neuro (
nid int4 NOT NULL DEFAULT nextval('neuro_nid_seq'::regclass),
data jsonb,
CONSTRAINT neuro_pkey PRIMARY KEY (nid) NOT DEFERRABLE INITIALLY IMMEDIATE
);
记录:
{"item2": {"1": "0", "uid": "0", "nota": "weqcqwe qwe wq", "fecha": "23-02-2015", "examen": "aesc", "puntaje": "0", "paciente": "103636426"}}
{"item2": {"1": "0", "uid": "0", "nota": "text", "fecha": "23-02-2015", "examen": "aesc", "puntaje": "0", "paciente": "103636426"}}
{"item3": {"1": "3", "2": "1", "3": "3", "uid": "0", "fecha": "23-02-2015", "examen": "fab", "puntaje": "7", "paciente": "103636426"}}
...
如何选择examen ='aesc'
的所有记录?我尝试使用运算符->>
或@
。如何以相同的方式选择一些字段?我需要在jSON列中维护初始的“itemX”。
答案 0 :(得分:1)
由于您的JSON对象似乎完全嵌套在一个级别,您可以使用jsonb_each()
取消一个级别并搜索动态密钥名称的值部分(我们忽略这种方式) :
SELECT n.*
FROM public.neuro n, jsonb_each(n.data) d
WHERE d.value->>'examen' = 'aesc'
相关: