[英]Converting values from array in 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, tags)
VALUES (2, '{Security, Transport}');
现在,我要进行sql查询,该查询将返回另外一列,此列名称为domain_name
。 该列的值取决于tags
列所具有的内容。 如果tags
列具有Food
值,则domain_name
应该是I need food help
;如果标签包含Transport
则domain_name
将具有Transport help needed
。 所以查询的结果应该是
id | domain_name
1 | I need food help
2 | Transport help needed
如何在PostgreSQL中执行类似的操作?
这是带有数据库模式的sql小提琴:
SELECT id,CASE WHEN 'Food' = ANY(tags) THEN 'I need food help'
WHEN 'Transport' = ANY(tags) THEN 'Transport help needed'
END AS domain_name
FROM slide_results;
似乎您需要一个表将tag
转换为domain_name
,例如
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.