Как в postgresql найти все значения по неполному ключу jsonb?

Не получается написать запрос в postgresql для поиска всех ключей которые имеют одинаковое окончание в jsonb-колонке. например у меня есть структура в которой есть ключи с "%_id": { "type": "1", "type_id": "2", "subtype": "3", "subtype_id": "4", "new_id": "5", } нужно отобрать записи в которых есть значения с "%_id"


Ответы (1 шт):

Автор решения: Andrei Odegov

С помощью jsonb_each.

with
  j(jb) as (
    values
      ('{ "type": "1", "type_id": "2", "subtype": "3", "subtype_id": "4", "new_id": "5" }'::jsonb)
  )
select
  key, value
from
  j,
  jsonb_each(j.jb) as jbe
where
  key like '%\_id' escape '\'
;

Результат:

+------------+-------+
|    key     | value |
+------------+-------+
| new_id     | "5"   |
| type_id    | "2"   |
| subtype_id | "4"   |
+------------+-------+

SQL Fiddle.

→ Ссылка