我有一个看起来像这样的表:
___COL_1___
'|A|B|C|'
'|D|A|'
'|X|Y|Z|A|'
'|Y|X|'
...
我想创建一个新表,如下所示:
___COL_1___ ........... ___COL_2___
'|A|B|C|'.....................'|A|'
'|A|B|C|'.....................'|B|'
'|A|B|C|'.....................'|C|'
'|D|A|'........................'|D|'
'|D|A|'........................'|A|'
'|X|Y|Z|A|B|C|'...........'|X|'
'|X|Y|Z|A|B|C|'...........'|Y|'
'|X|Y|Z|A|B|C|'...........'|Z|'
'|X|Y|Z|A|B|C|'...........'|A|'
'|X|Y|Z|A|B|C|'...........'|B|'
'|X|Y|Z|A|B|C|'...........'|C|'
...
所以我想将组递归地加入字符串中的每个项目。
答案 0 :(得分:2)
您不需要递归,只需:
|
个字符,|
个字符。with my_data(col1) as (
values
('|A|B|C|'),
('|D|A|'),
('|X|Y|Z|A|'),
('|Y|X|')
)
select
col1,
format('|%s|', unnest(string_to_array(trim(col1, '|'), '|'))) as col2
from my_data
col1 | col2
-----------+------
|A|B|C| | |A|
|A|B|C| | |B|
|A|B|C| | |C|
|D|A| | |D|
|D|A| | |A|
|X|Y|Z|A| | |X|
|X|Y|Z|A| | |Y|
|X|Y|Z|A| | |Z|
|X|Y|Z|A| | |A|
|Y|X| | |Y|
|Y|X| | |X|
(11 rows)