Ответ 1
Если столбец данных является типом текста, используйте ->>
при создании:
select * from module_data where data::json->>'title' like '%Board%'
Если это уже json:
select * from module_data where data->>'title' like '%Board%'
У меня есть следующая таблица с именем module_data. В настоящее время в нем три строки записей:
id data
0ab5203b-9157-4934-8aba-1512afb0abd0 {"title":"Board of Supervisors Meeting","id":"1i3Ytw1mw98"}
7ee33a18-63da-4432-8967-bde5a44347a0 {"title":"Board of Supervisors Meeting","id":"4-dNAg2mn6o"}
8d71ca35-74eb-4751-b635-114bf04843f1 {"title":"COPD 101", "id":"l9O0jCR-sxg"}
Тип данных столбца - jsonb
. Я пытаюсь запросить его, используя оператор like
. Примерно так:
SELECT * FROM module_data WHERE title LIKE '%Board%';
Я искал поддержку jsonb
, и, похоже, нет оператора like
. Если у кого есть совет.
Если столбец данных является типом текста, используйте ->>
при создании:
select * from module_data where data::json->>'title' like '%Board%'
Если это уже json:
select * from module_data where data->>'title' like '%Board%'
Еще один вариант, который может оказаться достаточным для других людей, которые нашли эту страницу, - просто привести столбец к текстовому типу. Например
select * from module_data where data::text like '%Board%'
Обратите внимание, что этот поиск будет выполнять поиск по всему json и должен использоваться только в том случае, если вы можете гарантировать, что другие поля не будут проблемой.
Следующие работы для столбцов типа JSONB:
select * from table_name
where
column_name::text like '%Something%'
Нашел хорошую статью о большем количестве примеров и реализаций: https://www.compose.com/articles/faster-operations-with-the-jsonb-data-type-in-postgresql/
Надеюсь, это поможет!
Я думаю, что это должно быть как
select * from module_data where data->>'$."title"' like '%Board%'
тогда только у меня это сработало.