Sql 如何在Amazon Redshift中取消对列中逗号分隔值的显示/分解/展平?

Sql 如何在Amazon Redshift中取消对列中逗号分隔值的显示/分解/展平?,sql,split,amazon-redshift,amazon-rds,Sql,Split,Amazon Redshift,Amazon Rds,我试图为col2中的每个值生成一个新行。由于该值是字符串格式,因此在对其使用任何红移json函数之前,我需要将其用双引号括起来 输入: col1(int) col2(varchar) 1 ab,cd,ef 2 gh 3 jk,lm,kn,ut,zx 输出: col1(int) col2(varchar) 1 ab 1 cd 1

我试图为col2中的每个值生成一个新行。由于该值是字符串格式,因此在对其使用任何红移json函数之前,我需要将其用双引号括起来

输入:

col1(int)       col2(varchar)
1               ab,cd,ef
2               gh
3               jk,lm,kn,ut,zx
输出:

col1(int)       col2(varchar)
1               ab
1               cd
1               ef
2               gh
3               jk
3               lm
3               kn
3               ut
3               zx
在这里,NS number序列是一个CTE,它返回一个从1到N的数字列表,这里我们必须确保max number大于max tag的大小,因此您可以根据上下文尝试向列表中添加更多数字

    with NS AS (
      select 1 as n union all
      select 2 union all
      select 3 union all
      select 4 union all
      select 5 union all
      select 6 union all
      select 7 union all
      select 8 union all
      select 9 union all
      select 10
    )
    select
      TRIM(SPLIT_PART(B.col2, ',', NS.n)) AS col2
    from NS
    inner join table B ON NS.n <= REGEXP_COUNT(B.col2, ',') + 1