PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Tableau de conversion PostgreSQL renvoyé de la fonction aux colonnes

pouvez-vous utiliser une sous-sélection ?

postgres=# select ar[1], ar[2] from (select string_to_array('a b c', ' ') ar) as sq;
 ar | ar 
----+----
 a  | b
(1 row)

Cela nécessite toujours que vous extrayiez explicitement chaque colonne (comme vous le faites déjà). S'il y a plus d'éléments dans le tableau qu'extraits, ils seront perdus, et s'il y en a moins, alors les colonnes manquantes seront simplement NULL .

EDIT :Je pense que j'envelopperais le tout dans une sous-sélection ; la sous-sélection interne génère les lignes souhaitées , avec la sélection externe projetant la requête interne dans les colonnes souhaitées :

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;

Les sélections intérieure et extérieure corrèleront correctement le table1 références.