Могу ли я использовать ilike для проверки содержимого таблицы в jsonb?

SELECT 
    id,
    some_jsonb_table
FROM
    public.example
where some_jsonb_table::text ilike '%example_report%'

Я пытался включить some_jsonb_tableTEXT, но все равно ILIKE не работает. Как проверить, содержит ли содержимое таблицы искомый фрагмент текста?

почему это не работает? Вы получаете сообщение об ошибке или ожидаемый результат не происходит? Можете ли вы поделиться некоторыми образцами данных и образцами вывода?

EoinS 02.05.2022 16:54
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

jsonb_data::text ilike '%my_search_string% должно работать отлично

Возьмите этот образец таблицы и запрос, он работает даже с вложенными объектами jsonb.

with a as (
select cast('{"brand": "Toyota", "color": ["red", "black"], "price": 285000}' as jsonb) jsonb_data
union  
select cast('{"brand": "Honda", "color": ["blue", "pink"], "price": 25000}' as jsonb)
)
select * from a 
where jsonb_data::text ilike '%blue%';

Результат ожидаемый

jsonb_data
{"brand": "Honda", "color": ["blue", "pink"], "price": 25000}

Вы также можете использовать альтернативные операторы

with a as (
select cast('{"brand": "Toyota", "color": ["red", "black"], "price": 285000, "sold": true}' as jsonb) jsonb_data
union  
select cast('{"brand": "Honda", "color": {"good":[["blue"], "pink"]}, "price": 25000, "sold": false}' as jsonb)
)
select * from a 
where jsonb_data ->> 'color' ~* 'blue';

Хороший ресурс по jsonb в PostreSQL

Другие вопросы по теме