sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL-konverteringsarray returneret fra funktion til kolonner

kan du bruge et undervalg?

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

Dette kræver stadig, at du eksplicit udtrækker hver kolonne (som du allerede gør). Hvis der er flere elementer i arrayet end der er udtrukket, vil de gå tabt, og hvis der er færre, så vil de manglende kolonner bare være NULL .

EDIT:Jeg tror, ​​jeg ville pakke det hele ind i et undervalg; det indre undervalg genererer de ønskede rækker , hvor den ydre markering projicerer den indre forespørgsel ind i de ønskede kolonner :

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 indre og ydre valg vil korrekt korrelere table1 referencer.



  1. Store accessor problem:Kan ikke læse gamle allerede lagrede json objekt serialiserede (hash) værdier i mysql database i Rails 4

  2. Forsøger at ændre en begrænsning i PostgreSQL

  3. PostgreSQL CROSS JOIN-indeksering for ydeevne

  4. Indsættelse af et billede fra Oracle i SQL Server