簡體   English   中英

在PostgreSQL中從數組轉換值

[英]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 ;如果標簽包含Transportdomain_name將具有Transport help needed 所以查詢的結果應該是

id             | domain_name
1              | I need food help
2              | Transport help needed

如何在PostgreSQL中執行類似的操作?

這是帶有數據庫模式的sql小提琴:

https://www.db-fiddle.com/f/pP7ZfNzVnisSG6xCjejqkY/0

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)    

DB-小提琴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM