我需要获取此单列表的内容,每行包含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