dapatkah Anda menggunakan subpilihan?
postgres=# select ar[1], ar[2] from (select string_to_array('a b c', ' ') ar) as sq;
ar | ar
----+----
a | b
(1 row)
Ini masih mengharuskan Anda mengekstrak setiap kolom secara eksplisit (seperti yang sudah Anda lakukan). Jika ada lebih banyak elemen dalam array daripada yang diekstraksi, mereka akan hilang, dan jika ada lebih sedikit, maka kolom yang hilang hanya akan menjadi NULL
.
EDIT:Saya pikir saya akan membungkus semuanya dalam subpilihan; subselect bagian dalam menghasilkan baris yang diinginkan , dengan pilihan luar memproyeksikan kueri dalam ke kolom . yang diinginkan :
SELECT subquery1.a, subquery1.b, subquery1.c,
myfunction_result[1], myfunction_result[2]
FROM ( SELECT table1.a, table1.b, table1.c,
MyFunction(table1.a, table1.b, table1.c) as myfunction_result
FROM table1 INNER JOIN table2 using(b)
WHERE ... GROUP BY table1.a, table1.b, table1.c
) AS subquery1;
Pilihan dalam dan luar akan menghubungkan table1
dengan benar referensi.