在PostgreSQL中从数组转换值
在我的PostgreSQL数据库中,我有以下模式:在PostgreSQL中从数组转换值,sql,postgresql,Sql,Postgresql,在我的PostgreSQL数据库中,我有以下模式: CREATE TABLE slide_results ( id integer NOT NULL, tags character varying[] DEFAULT '{}'::character varying[] ); INSERT INTO slide_results (id, tags) VALUES (1, '{Food, Housing}'); INSERT INTO slide_results (id,
CREATE TABLE slide_results (
id integer NOT NULL,
tags character varying[] DEFAULT '{}'::character varying[]
);
INSERT INTO slide_results (id, tags)
VALUES (1, '{Food, Housing}');
INSERT INTO slide_results (id, tags)
VALUES (2, '{Security, Transport}');
现在我想让sql查询返回一个额外的列,这个列名是domain\u name
。此列的值取决于标记的内容。如果标签
列具有食品
值,则域名
应为我需要食品帮助
,如果标签包括运输
则域名
将具有需要的运输帮助
。所以查询的结果应该是
id | domain_name
1 | I need food help
2 | Transport help needed
如何在PostgreSQL中执行类似操作
下面是sql FIDLE与db模式:
似乎您需要一个表来将标记
转换为域名
,例如
create table tag_domain(tag text, domain_name text);
insert into tag_domain values
('Food', 'I need food help'),
('Transport', 'Transport help needed');
并以这种方式使用它:
select *
from slide_results s
join tag_domain t on t.tag = any(s.tags)
select *
from slide_results s
join tag_domain t on t.tag = any(s.tags)