PostgreSQL是否支持MySQL' RLIKE' / jsonb列中的/ regexp语句类型?
例如,需要一个查询,从下表中提取所有包含值' big':
的ID| data |
| "id" :"bigData" , "content" : "aaa...." |
| "id" : "biggerData, "content" : "bbb..."|
| "id": "smallData", "content: "ddd......"|
Select * from myTable where data Rlike ...
适用吗?
答案 0 :(得分:2)
如果列包含有效的json对象,您可以使用the ->> operator和简单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)
在更复杂的情况下,您还可以使用the regex pattern matching operator ~,例如:
select *
from my_table
where data->>'id' ~ 'big.*Data';
答案 1 :(得分:0)
谢谢克林, 我使用的格式为:
select * from my_table
where data ->> 'id' ~* 'big';
- >这将搜索其值包含子字符串" big"
的所有id