Joh*_*ton 20 sql csv postgresql
我有一个包含逗号分隔字符串字段的表:
ID | fruits
-----------
1 | cherry,apple,grape
2 | apple,orange,peach
Run Code Online (Sandbox Code Playgroud)
我想创建表的规范化版本,如下所示:
ID | fruits
-----------
1 | cherry
1 | apple
1 | grape
2 | apple
2 | orange
2 | peach
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
这给你这个:
foo
--------
the
quick
brown
fox
jumped
over
the
lazy
dog
(9 rows)
Run Code Online (Sandbox Code Playgroud)
但这仅适用于单个领域.我想要做的是将某种UNION应用于通过拆分每个字段生成的所有表.谢谢.
Mic*_*son 23
这应该为您提供您正在寻找的输出:
SELECT
yourTable.ID,
regexp_split_to_table(yourTable.fruits, E',') AS split_fruits
FROM yourTable
Run Code Online (Sandbox Code Playgroud)
编辑:修正了正则表达式.