从PostgreSQL JSON列

时间:2016-10-14 14:14:53

标签: json postgresql

对于给定的Postgres表:

CREATE TABLE "public"."store" (
    "key" varchar(50) NOT NULL,
    "value" json,
    PRIMARY KEY ("key")
);

如果我填充以下JSON编码值:

INSERT INTO "store" VALUES ('integer', '1'),
    ('array', '{"foo": "bar"}'),
    ('string', '"baz"');

我可以编写一个查询来提取foo的值,如下所示:

SELECT value->>'foo' FROM store WHERE key = 'array'

它返回bar的字符串值(没有引号)。

但是,我无法弄清楚我应该如何编写查询以获取字符串键的未编码值。以下查询返回“baz”(带引号)。

SELECT value FROM store WHERE key = 'string'

如何编写最后一个查询以提取“string”键的单个字符串值?

1 个答案:

答案 0 :(得分:3)

使用docs #>>中的Get JSON object at specified path as text运算符。

SELECT value #>>'{}' FROM store WHERE key = 'string'

结果:baz而非"baz".

编辑:

您也可以在key = 'array'

时执行相同操作
SELECT value #>>'{foo}' FROM store WHERE key = 'array'