我建议您升级Postgres版本。所有受支持的版本均支持
unnest():
SELECt x.*FROM (SELECt id, UNNEST(selected_placements) as selected_placement FROM app_data.content_cards ) xWHERe selected_placement IS NOT NULL;
在早期版本中,您可以尝试一次将它们选出来。尽管已在9.5中进行了测试,但仍可以正常工作:
with content_cards as ( select 1 as id, array['a', 'b', 'c'] as selected_placements )SELECT id, selected_placements[num] as selected_placementFROM (SELECt cc.*, generate_series(1, ccup.maxup) as num FROM content_cards cc CROSS JOIN(SELECt MAX(ARRAY_UPPER(cc.selected_placements, 1)) as maxup FROM content_cards cc) ccup ) xWHERe selected_placements[num] IS NOT NULL;



