Поддерживает ли Postgres R-подобную статистику в типе столбцов jsonb?
Поддерживает ли PostgreSQL оператор MySQL 'RLIKE' / Regexp в виде столбцов jsonb?
например, нужен запрос, который извлекает из следующей таблицы все идентификаторы, которые содержат значение "большой":
| data |
| "id" :"bigData" , "content" : "aaa...." |
| "id" : "biggerData, "content" : "bbb..."|
| "id": "smallData", "content: "ddd......"|
Select * from myTable where data Rlike ...
Это применимо?
2 ответа
Если столбец содержит допустимые объекты json, вы можете использовать оператор ->>;; и просто LIKE
или же ILIKE
оператор:
with my_table(data) as (
values
('{"id": "bigData" , "content": "aaa...."}'::jsonb),
('{"id": "biggerData", "content": "bbb..."}'),
('{"id": "smallData", "content": "ddd......"}')
)
select *
from my_table
where data->>'id' like '%big%';
data
-------------------------------------------
{"id": "bigData", "content": "aaa...."}
{"id": "biggerData", "content": "bbb..."}
(2 rows)
В более сложных случаях вы также можете использовать оператор сопоставления с регулярным выражением ~, например:
select *
from my_table
where data->>'id' ~ 'big.*Data';
Спасибо, Клин, я использовал формат:
select * from my_table
where data ->> 'id' ~* 'big';
-> Это будет искать все идентификаторы, которые его значение содержит подстроку "большой"