【问题标题】:Extract value of single string record from PostgreSQL JSON column从 PostgreSQL JSON 列中提取单个字符串记录的值
【发布时间】:2016-10-14 14:14:53
【问题描述】:

对于给定的 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'

我应该如何编写最后一个查询来提取“字符串”键的单个字符串值?

【问题讨论】:

    标签: json postgresql


    【解决方案1】:

    使用#>> 运算符,来自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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      相关资源
      最近更新 更多