1

PostgreSQL 是否支持 jsonb 列类型中的 MySQL 'RLIKE' / Regexp 语句?

例如,需要一个从下表中提取所有包含值“big”的 id 的查询:

| data                                    |  
| "id" :"bigData" , "content" : "aaa...." |  
| "id" : "biggerData, "content" : "bbb..."|  
| "id": "smallData", "content: "ddd......"|  



Select * from myTable where data Rlike ...

适用吗?

4

2 回答 2

2

如果列包含有效的 json 对象,您可以使用->> 运算符和简单的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)    

在更复杂的情况下,您还可以使用正则表达式模式匹配运算符 ~,例如:

select *
from my_table
where data->>'id' ~ 'big.*Data';
于 2017-12-26T11:50:56.660 回答
0

谢谢克林,我使用了以下格式:

select * from my_table 
where data ->> 'id' ~* 'big'; 

--> 这将搜索其值包含子字符串“big”的所有 id

于 2017-12-26T15:15:10.440 回答