Может ли запрос Postgres jsonb LIKE? - PullRequest
0 голосов
/ 05 мая 2020

знает ли кто-нибудь, как вводить подстановочные знаки (например, %%) при запросе столбца jsonb, который в данном случае является массивом на верхнем уровне? также хотел бы игнорировать casee

select * from "food" where (type @> '"xyz"')

Ответы [ 3 ]

0 голосов
/ 06 мая 2020

Одним из вариантов может быть применение CROSS JOIN между элементами таблицы и невложенного массива без подзапроса как

SELECT j.*
  FROM food f
 CROSS JOIN jsonb_array_elements(type) AS j
 WHERE value::text like '%"xyz"%'

Demo

0 голосов
/ 06 мая 2020

спасибо, ребята .. похоже, это помогает:

SELECT *
  FROM 
      food,
      jsonb_array_elements(type) as types
  WHERE types::text ilike '%xyz%';```
0 голосов
/ 05 мая 2020

Вам нужно разложить массив:

select f.*
from food f
where exists (select *
              from jsonb_array_elements_text(f.type) as x(typ)
              where x.typ like '%xyz%');
...