Hi,

I have simplified the case and tried to look from a list of json items
(please see test table content). I think I have managed to unpack values in
such a way that also partial matching is possible. However, the end result
has two "value" named columns even if I have tried to rename them.

How can I rename the columns coming from jsonb_ functions? Or is there a
better way of unpacking the list and items?

select * from test;
 id |           main
----+--------------------------
  1 | [{"A": "b"}, {"B": "b"}]
(1 row)

select * from test, jsonb_array_elements(test.main) as m, jsonb_each(value);
 id |           main           |   value    | key | value
----+--------------------------+------------+-----+-------
  1 | [{"A": "b"}, {"B": "b"}] | {"A": "b"} | A   | "b"
  1 | [{"A": "b"}, {"B": "b"}] | {"B": "b"} | B   | "b"
(2 rows)

Thanks

Performance of this will be awful.  Unfortunately, FWICT there is no

> way to do partial string matches against json in a indexed way without
> some serious elbow grease.  For full key-value matching though you're
> good to go.
>
> Do index this operation, the best option today will revolve around the
> pg_trgm module.  It can optimize like expressions against text.
> Performance of this is a mixed bag although upcoming pg_trgm
> enhancements should make it a lot faster.
>
> merlin
>

Reply via email to