PostgreSQL-查询每行包含5个元素数组的单列表,以返回每行拆分为5列的数组

PostgreSQL-查询每行包含5个元素数组的单列表,以返回每行拆分为5列的数组,sql,arrays,postgresql,unnest,Sql,Arrays,Postgresql,Unnest,我需要获取此单列表的内容,每行包含5个元素的数组: Col1 ---- {a,b,c,d,e} {f,g,h,i,j} {a,f,r,y,t} ... 为此: colA | ColB | ColC | ColD | ColE a | b | c | d | e f | g | h | i | j a | f | r | y | t 我已尝试使用unnest(字符串到数组): 但最终以 splitvals a b c

我需要获取此单列表的内容,每行包含5个元素的数组:

Col1
----
{a,b,c,d,e}
{f,g,h,i,j}
{a,f,r,y,t}
...
为此:

colA | ColB | ColC | ColD | ColE
  a  |   b  |  c   |  d   |  e
  f  |   g  |  h   |  i   |  j
  a  |   f  |  r   |  y   |  t
我已尝试使用unnest(字符串到数组):

但最终以

splitvals
a
b
c
d
e
但我需要将每个数组元素拆分为一个单独的列,而不必求助于split_part()。在其他上下文中,我可能每行有一个7个元素的数组,因此最好有一个更“通用”的查询来实现任何数组大小的查询,而不只是为每个额外的元素添加split_part()

有什么想法吗


使用以下方法找到答案:

    SELECT NULLIF(p[1],'') AS Col1,
       NULLIF(p[2],'') AS Col2,
       NULLIF(p[3],'') AS Col3,
       NULLIF(p[4],'') AS Col4,
       NULLIF(p[5],'') AS Col5
FROM (
  SELECT string_to_array('a,b,c,d,e', ',') AS p
  ) x

您不能有一个通用的“查询”,因为SQL查询只有一组预先定义的列。只有在使用动态SQL时,列的数量才能变化。是的,我应该更明确地说,我不希望每个额外的数组元素都有一个额外的split_part()函数。也许您可以自定义此问题的答案。也许它是重复的…@ChrisThomas数据类型是什么,数组还是基于文本的?假设使用数组,您只需执行
选择col1[1]、col1[2]、col1[3]、…
;如果是字符串,则首先拆分字符串,然后使用如上所述的数组索引来获取列。谢谢@Jaisus。你和404的建议结合起来帮我解决了这个问题!
    SELECT NULLIF(p[1],'') AS Col1,
       NULLIF(p[2],'') AS Col2,
       NULLIF(p[3],'') AS Col3,
       NULLIF(p[4],'') AS Col4,
       NULLIF(p[5],'') AS Col5
FROM (
  SELECT string_to_array('a,b,c,d,e', ',') AS p
  ) x