对于给定的 Postgres 表:
CREATE TABLE "public"."store" (
"key" varchar(50) NOT NULL,
"value" json,
PRIMARY KEY ("key")
);
Run Code Online (Sandbox Code Playgroud)
如果我填充以下 JSON 编码值:
INSERT INTO "store" VALUES ('integer', '1'),
('array', '{"foo": "bar"}'),
('string', '"baz"');
Run Code Online (Sandbox Code Playgroud)
我可以编写一个查询来提取 foo 的值,如下所示:
SELECT value->>'foo' FROM store WHERE key = 'array'
Run Code Online (Sandbox Code Playgroud)
它返回 bar 的字符串值(不带引号)。
但是,我无法弄清楚我应该如何编写查询来获取字符串键的未编码值。以下查询返回“baz”(带引号)。
SELECT value FROM store WHERE key = 'string'
Run Code Online (Sandbox Code Playgroud)
我应该如何编写最后一个查询来提取“字符串”键的单个字符串值?
使用#>>操作符,来自文档: Get JSON object at specified path as text。
SELECT value #>>'{}' FROM store WHERE key = 'string'
Run Code Online (Sandbox Code Playgroud)
结果:baz并没有"baz".
编辑:
您也可以在以下情况下执行相同操作key = 'array':
SELECT value #>>'{foo}' FROM store WHERE key = 'array'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2994 次 |
| 最近记录: |