postgresql查询json的值(而不是键)?

时间:2015-06-17 15:54:43

标签: json postgresql

想象一下这个简单的postgresql表('json_table'):

id | data(json)
1  | {"a": 1}
2  | {"a": 1, "b": 2}
3  | {"a": 2}

我知道可以查询所有包含密钥'a'的记录:SELECT * FROM json_table WHERE data ? 'a';

但是我想查询包含json值'2'的所有记录。所以结果应该是这样的:

2  | {"a": 1, "b": 2}
3  | {"a": 2}

这可以通过上面提到的“简单”查询来实现吗?

1 个答案:

答案 0 :(得分:1)

我认为在这样一个简单的查询中你可以使用一个运算符。 您可以通过下面的查询来实现这一点,但我不知道这是否是最简单的方法:

select distinct on (id) id, data from (
    select id, data, (json_each(data)).value::text
    from json_table
    ) alias
where value = '2'