Можно ли найти записи в таблице по значению в объекте (без предоставления ключа)? - PullRequest
1 голос
/ 03 мая 2020

У меня есть таблица profile, которая выглядит следующим образом:

id  | name (jsonb)                       | lots of different fields ...
1   | {en: "Some name", fr: "Un nom"}    | ...
2   | {ru: "Какое то название"}          | ...

Можно ли найти все записи в таблице со значением Some name?

Я использую Postgresql 12

1 Ответ

1 голос
/ 04 мая 2020

Вам необходимо удалить объект json:

select p.*
from profile p
where exists (select *
              from jsonb_each(p.name) as j(k,v)
              where j.v = 'Some name');

С Postgres 12 это также можно записать с использованием выражения JSON path :

select p.*
from profile p
where name @? '$.keyvalue() ? (@.value == "Some name")'  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...