Postgres:如何将模式匹配查询json列?

时间:2018-04-09 19:24:09

标签: postgresql

我有一个json类型的列,但我想知道如何选择过滤它,即

select * from fooTable where myjson like "orld";

如何查询上面的子字符串匹配。说搜索" orld" " bar"键?

{ "foo": "hello", "bar": "world"}

我看了一下这个文档,但是很混乱。

https://www.postgresql.org/docs/current/static/datatype-json.html

1 个答案:

答案 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)

请注意,您需要在模式中使用占位符%