我有一个包含逗号分隔字符串的字段的表:
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
编辑:修正正则表达式.