Как использовать LIKE для элементов массива JSONB? - PullRequest
0 голосов
/ 25 января 2019

Мне нужно искать с помощью LIKE или ILIKE - применяется к элементам столбца JSONB[].

Я могу использовать unnest() для отображения вложенных элементов JSONB отдельно, но явозникли проблемы с сочетанием этого с моим LIKE выражением.Мой запрос:

SELECT
    UNNEST( column_jsonb[] )
FROM
    table1
WHERE
    UNNEST( column_jsonb[] ) ->> 'member_type' LIKE '%member%'

Приводит к ошибке:

аргумент WHERE не должен возвращать набор

Как правильно это сделать?

1 Ответ

0 голосов
/ 25 января 2019

Если это действительно столбец jsonb[]:

SELECT * -- or whatever
FROM   t, unnest(jsonb_col) j
WHERE  j->>'member_type' LIKE '%member%';

Это неявное CROSS JOIN LATERAL.

Если это массив JSON в простом столбце jsonb (более вероятно):

SELECT *
FROM   t1, jsonb_array_elements(jsonb_col) j
WHERE  j->>'member_type' LIKE '%member%';

Связанный:

...