1

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'? 演算子->>orを使ってみました@。同じ方法でいくつかのフィールドを選択する方法は? JSON列で最初の「itemX」を維持する必要があります。

4

1 に答える 1

2

JSON オブジェクトは正確に1 つのレベルでネストされているように見えるため、1 つのレベルのネストを解除jsonb_each()し、動的キー名の値の部分を検索できます (この方法では無視します)。

SELECT n.*
FROM   public.neuro n, jsonb_each(n.data) d
WHERE  d.value->>'examen' = 'aesc'

関連している:

于 2015-02-23T23:34:13.477 に答える