首页 > 解决方案 > postgresql:从 Char Varying 字段中提取多个值

问题描述

我在 PostgreSQL 中有一个类型为字符不同 [] 的字段存储在这里是扇区,一些客户没有数据,其他客户有 1 到多个扇区,最终看起来像这样

**Customer**  ABC        
**Sector** ,Exh: Food Trade,Exh: Beverage Trade,Evt: Sporting

有谁知道我如何查询每个值?给我每个客户的独特价值

**Customer** ABC **sector** Exh:Food Trade,
**Customer** ABC **sector** Exh:Beverage Trade
**Customer** ABC **Sector** Evt:Sporting

标签: sqlpostgresql

解决方案


尝试使用unnest.

测试数据

CREATE TABLE t (customer text, sector text[]);
INSERT INTO t VALUES 
('ABC',string_to_array(',Exh: Food Trade,Exh: Beverage Trade,Evt: Sporting',','));

询问

SELECT customer, unnest(sector) FROM t;
 customer |       unnest        
----------+---------------------
 ABC      | 
 ABC      | Exh: Food Trade
 ABC      | Exh: Beverage Trade
 ABC      | Evt: Sporting
(4 Zeilen)

编辑:使用 a 摆脱空元素CTE(见评论)

WITH j AS (
SELECT customer, unnest(sector) as sector FROM t 
) SELECT * FROM j WHERE sector <> '';

 customer |       sector        
----------+---------------------
 ABC      | Exh: Food Trade
 ABC      | Exh: Beverage Trade
 ABC      | Evt: Sporting
(3 Zeilen)

推荐阅读