在Postgresql中拆分逗号分隔的字段,并对所有生成的表执行一个UNION ALL

前端之家收集整理的这篇文章主要介绍了在Postgresql中拆分逗号分隔的字段,并对所有生成的表执行一个UNION ALL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个包含逗号分隔字符串的字段的表:
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_split_to_table函数

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

编辑:修正正则表达式.

猜你在找的Postgre SQL相关文章