横向嵌套-SQL

时间:2019-02-15 11:38:15

标签: sql postgresql unnest

横向不舒服-ing给我带来了一些问题。

我有一张桌子 看起来像:

Name  | Info
------|------
  A   | Info1, Info2, Info3
  B   | Info1, Info 2, Info3

我希望它看起来像是:

Name  | Info
------|------
 A    | Info1 
 A    | Info2 
 A    | Info3 
 B    | Info1 
 B    | Info2 
 B    | Info3 

那里还有更多列。我都想保留它们。 有任何想法吗?

1 个答案:

答案 0 :(得分:3)

如果您想使用unnest()

select t.name, trim(i) as info
from t cross join lateral
     unnest(string_to_array(t.info, ',')) i;

您无需使用unnest(),因为您可以直接拆分为数组:

select t.name, trim(i) as info
from t cross join lateral
     regexp_split_to_table(t.info, ',') i;