Как я могу получить actionName в ActionFilter ?

Используйте unnest() в боковом соединении:

with my_data(json_column) as (
values (
    array['{"a":1,"b":2,"c":"bar"}','{"a":2,"b":3,"c":"baz"}']::jsonb[])
)
select 
    value->>'a' as a, 
    value->>'b' as b, 
    value->>'c' as c
from my_data
cross join unnest(json_column) as value

 a | b |  c  
---+---+-----
 1 | 2 | bar
 2 | 3 | baz
(2 rows)

Вам могут потребоваться некоторые приведения или преобразования, например:

select 
    (value->>'a')::int as a, 
    (value->>'b')::int as b, 
    (value->>'c')::text as c
from my_data
cross join unnest(json_column) as value

Боковое соединение означает, что функция unnest() будет выполняется для каждой строки из основной таблицы. Функция возвращает элементы массива как value.

7
задан Fromeast 29 October 2008 в 08:43
поделиться