jay*_*lee 5 sql postgresql json pattern-matching
我有一个带有一jsonb列的数据库,其中每一行本质上都包含一个名称值对数组。单个jsonb值的示例:
[
{"name":"foo", "value":"bar"},
{"name":"biz", "value":"baz"},
{"name":"beep", "value":"boop"}
]
Run Code Online (Sandbox Code Playgroud)
如何查询包含部分值的行?即,查找具有 JSON 对象键value(如“%ba%”)的行?
我知道我可以用来SELECT * FROM tbl WHERE jsoncol @> '[{"value":"bar"}]'查找 JSON 是该特定值的行,但是我将如何查询包含模式的行?
jsonb_array_elements()您可以在横向连接中使用该函数并value在WHERE子句中使用其结果:
select distinct t.*
from my_table t
cross join jsonb_array_elements(jsoncol)
where value->>'value' like '%ba%'
Run Code Online (Sandbox Code Playgroud)
请阅读如何使用 IN 运算符查询 jsonb 数组以获取有关注释distinct和性能的信息。
| 归档时间: |
|
| 查看次数: |
4544 次 |
| 最近记录: |