当我有一个分隔值的列时,我可以使用 unnest()函数:
myTable
id | elements
---+------------
1  |ab,cd,efg,hi
2  |jk,lm,no,pq
3  |rstuv,wxyz
select id, unnest(string_to_array(elements, ',')) AS elem
from myTable
id | elem
---+-----
1  | ab
1  | cd
1  | efg
1  | hi
2  | jk
...
如何包含元素编号? 例如:
id | elem | nr
---+------+---
1  | ab   | 1
1  | cd   | 2
1  | efg  | 3
1  | hi   | 4
2  | jk   | 1
...
我想要源字符串中每个元素的 原来的位置。我试过窗口函数(row_number(),rank()等) ,但我总是得到 1。也许是因为它们位于源表的同一行中?
我知道这是个糟糕的桌子设计,这不是我的,我只是想修好它。