database - Postgres 是否支持 jsonb 列类型中的 Ilike 语句?

标签 database postgresql rlike

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

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

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



Select * from myTable where data Rlike ...

是否适用?

最佳答案

如果该列包含有效的 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';

关于database - Postgres 是否支持 jsonb 列类型中的 Ilike 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978077/

相关文章:

java - Hibernate Query 中 mysql RLIKE 运算符的等效项是什么?

mysql - 这样安全吗?这在 MYSQL 中可以吗?

python - 为什么 Django ORM 允许我在创建对象时省略 NOT NULL 字段的参数?

mysql - 选择以 _timestamp 结尾且匹配 regxp 的 MySQL 表

r - 如何将所有转义字符保留在 SQL 字符串中以使用 R 查询 POSTGRES 数据库?

PostgreSQL TDE 支持

hadoop - 在 Hive 中使用 LIKE 或 RLIKE 连接表

database - 什么是 "Lightweight Transaction",为什么这样调用它们?

database - 启用与 LDAP 服务器的 SSL 通信

php - 一次更新数据库中的多条记录