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

时间:2019-09-17 11:43:18

标签: 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(string_to_array):

SELECT unnest(string_to_array('a,b,c,d,e', ',')) AS splitvals

但最终会

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

0 个答案:

没有答案