sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL converteert array geretourneerd van functie naar kolommen

kun je een subselectie gebruiken?

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

Dit vereist nog steeds dat je elke kolom expliciet extraheert (zoals je al doet). Als er meer elementen in de array zijn dan geëxtraheerd, gaan ze verloren en als er minder zijn, zijn de ontbrekende kolommen gewoon NULL .

EDIT:ik denk dat ik het hele ding in een subselect zou verpakken; de binnenste subselect genereert de gewenste rijen , waarbij de buitenste selectie de binnenste query projecteert in de gewenste kolommen :

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;

De binnenste en buitenste selecties correleren correct met de table1 referenties.



  1. MySQL - Gegevens uit meerdere tabellen selecteren, allemaal met dezelfde structuur maar met verschillende gegevens

  2. Is de volgorde van tabellen waarnaar wordt verwezen in de ON-clausule van de JOIN van belang?

  3. IBM DB2 verbinden met IRI-software

  4. php/mysql postcode nabijheid zoeken