json - 从 PostgreSQL JSON 列中提取单个字符串记录的值

标签 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'

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

最佳答案

使用 #>> 运算符,来自 docs : 获取指定路径的 JSON 对象作为文本

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

结果:baz 而不是 "baz"。


编辑:

你也可以在 key = 'array' 时做同样的事情:

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

关于json - 从 PostgreSQL JSON 列中提取单个字符串记录的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40045375/

相关文章:

ios - Swift 中来自两个不同 JSON 的数据放入同一结构中

SQL:使用同一个表中的最小值更新最大值

php - 从 php 中的 mvc Controller 方法返回一个 json 值

javascript - 在nodejs中过滤JSON数据

json - Twitter 搜索 API 没有返回推文?

sql - 在sql中的某些单词之间选择数字

postgresql - 在 PostgreSQL 中显示表结构和表列表

android - 如何从 JSON 解析获得的 URL 将图像加载到 imageview 中?

postgresql - 将递归 CTE 与 Ecto 结合使用

sql - PostgreSQL 选择两列自引用