powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Jsonb
4 сообщений из 4, страница 1 из 1
Jsonb
    #39739713
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется колонка JSONB

Код: sql
1.
2.
3.
4.
                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"}




Код: sql
1.
2.
select * from module_data where data::json->>'title' like '%Board%'
select * from module_data where data->>'title' like '%Board%'



Поиск работает

А как организовать поиск по всей data , а не в конкретном месте
И если будут храниться различные JSON различной структуры
...
Рейтинг: 0 / 0
Jsonb
    #39741069
Alex URS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если я правильно понял, то так:
data::text->>'title' like '%Board%', т.к. в оригинале ты всёравно индексы не используешь, а вот если бы
data::json B ->>'title' like '%Board%' - то конечно чуть иначе

ещё можно так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with tbl as (
select '0ab5203b-9157-4934-8aba-1512afb0abd0'::UUID as id,  jsonb_build_object('title','Board of Supervisors Meeting','id','1i3Ytw1mw98') AS "value"
union all
select '7ee33a18-63da-4432-8967-bde5a44347a0'::UUID as id,  jsonb_build_object('title','Board of Supervisors Meeting','id','4-dNAg2mn6o') AS "value"
union all
select '8d71ca35-74eb-4751-b635-114bf04843f1'::UUID as id,  jsonb_build_object('title','COPD 101','id','l9O0jCR-sxg') AS "value"
)
 select id,
 (select "value" from jsonb_each_text("tbl"."value"::jsonb) 
 --where "key" = 'title'
 where "value"::text like '%Board%'::text
 --where "key" = 'title' and "value"::text like '%Board%'::text
 )
 from tbl
 



раскомментиш то, что нужно
что касается " различные JSON различной структуры " :
json_array_elements(json) (9.3+)
jsonb_array_elements(jsonb) (9.4+)
json[b]_array_elements_text(json[b])

ну или jsonb_to_recordset
...
Рейтинг: 0 / 0
Jsonb
    #39741118
Alex URS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
фразу
data::text->>'title' like '%Board%',
читать так:
data::text->>'title' like '%Board%',
...
Рейтинг: 0 / 0
Jsonb
    #39741177
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Имеется колонка JSONB

Код: sql
1.
2.
3.
4.
                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"}




Код: sql
1.
2.
select * from module_data where data::json->>'title' like '%Board%'
select * from module_data where data->>'title' like '%Board%'



Поиск работает

А как организовать поиск по всей data , а не в конкретном месте
И если будут храниться различные JSON различной структуры

FTS
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Jsonb
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]