【发布时间】:2019-04-29 08:58:30
【问题描述】:
我使用的是 Postgres 9.6,我有以下两个表:
create table employees (
id text,
setting_id text -- references settings.id
);
create table settings (
id text,
setting_str text -- contains json string
);
insert into employees (id, setting_id) values ('e1', 's1');
insert into employees (id, setting_id) values ('e2', 's2');
insert into settings (id, setting_str)
values ('s1', '{"vehicles" : null}');
insert into settings (id, setting_str)
values ('s2', '{"vehicles" : ["Car", "Bike"]}');
现在我想得到如下输出:
employee_id, name, vehicles
e1, one, null
e2, two, {"Car", "Bike"}
我尝试了以下查询:
select e.id,
jsonb_array_elements_text(s.setting_str::jsonb #> '{vehicles}')
from employees e
join settings s on s.id = e.setting_id;
但它给了我一个错误:
ERROR: cannot extract elements from a scalar
知道如何从文本字段中提取 JSON 数组并在 select 语句中将其显示为 Postgres 字符串数组(不是 json 数组,不是 text)吗?
【问题讨论】:
标签: arrays json postgresql join