Postgres是否支持jsonb列类型中的Rlike语句?

时间:2017-12-26 11:37:56

标签: database postgresql rlike

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 ...

适用吗?

2 个答案:

答案 0 :(得分:2)

如果列包含有效的json对象,您可以使用the ->> operator和简单LIKEILIKE运算符:

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