我有一个json类型的列,但我想知道如何选择过滤它,即
select * from fooTable where myjson like "orld";
如何查询上面的子字符串匹配。说搜索" orld" " bar"键?
{ "foo": "hello", "bar": "world"}
我看了一下这个文档,但是很混乱。
https://www.postgresql.org/docs/current/static/datatype-json.html
答案 0 :(得分:1)
使用->>
operator将json属性作为文本,例如
with my_table(id, my_json) as (
values
(1, '{ "foo": "hello", "bar": "world"}'::json),
(2, '{ "foo": "hello", "bar": "moon"}'::json)
)
select t.*
from my_table t
where my_json->>'bar' like '%orld'
id | my_json
----+-----------------------------------
1 | { "foo": "hello", "bar": "world"}
(1 row)
请注意,您需要在模式中使用占位符%
。