如何在Postgresql中分隔逗号分隔的字段并在所有结果表上执行UNION ALL?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (47)

我有一个包含逗号分隔字符串的字段的表:

ID | fruits
-----------
1  | cherry,apple,grape 
2  | apple,orange,peach 

我想要创建该表的规范化版本,如下所示:

ID | fruits
-----------
1  | cherry 
1  | apple 
1  | grape
2  | apple 
2  | orange 
2  | peach 

PostgreSQL 8.4文档描述了一个regexp。_分裂_到_表函数,它可以转动单个表:

SELECT foo 
FROM regexp_split_to_table('the quick brown fox jumped over the lazy dog',E'\\s+') AS
foo;

给了我这个:

  foo   
--------
  the    
  quick  
  brown  
  fox    
  jumped 
  over   
  the    
  lazy   
  dog    
 (9 rows)

但我想要做的是,对通过拆分每个字段生成的所有表应用某种类型的UNION。

提问于
用户回答回答于

这应该会给你你想要的输出:

SELECT 
    yourTable.ID, 
    regexp_split_to_table(yourTable.fruits, E',') AS split_fruits
FROM yourTable

扫码关注云+社区