在 PGSQL 中执行 unnest 时如何获取数组索引

How to get array index when doing unnest in PGSQL

我需要在执行 unnest 时获取数组索引。我试过 row_number() Over() 但这是计算行号,而不是数组索引。我也试过 WITH ORDINALITY 但它只适用于 from 子句。

select id, unnest(fname), status 
from testunnest;

Table testunnest

中的行
112w,{john,sam},yes  
2wew,{josh,Nick,Jeny},no

以上查询返回结果为

112w    john    yes  
112w    sam     yes  
2wew    josh    No  
2wew    Nick    No  
2wew    Jeny    No

预计是

112w    john    yes 1  
112w    sam     yes 2  
2wew    josh    No  1  
2wew    Nick    No  2  
2wew    Jeny    No  3  

from子句中使用unnest()函数,然后可以添加with ordinality选项,returns数组索引

select t.id, u.name, t.status, u.idx
from testunnest t
  cross join unnest(t.fname) with ordinality as u(name, idx);

一般来说,无论如何都建议在 FROM 子句中使用返回集合的函数。