sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL-konverteringsarray returneras från funktion till kolumner

kan du använda ett underval?

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

Detta kräver fortfarande att du explicit extraherar varje kolumn (som du redan gör). Om det finns fler element i arrayen än de extraheras kommer de att gå förlorade, och om det finns färre kommer de saknade kolumnerna bara att vara NULL .

EDIT:Jag tror att jag skulle slå in det hela i ett underval; det inre undervalet genererar önskade rader , med den yttre markeringen som projicerar den inre frågan i önskade kolumner :

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 inre och yttre valen kommer korrekt att korrelera table1 referenser.



  1. Vilket är det korrekta standardvärdet för ett MySQL-decimalfält?

  2. Fel vid försök att migrera postgresql db till mysql med workbench

  3. MySQL / PHP:Hitta liknande / relaterade objekt efter tagg / taxonomi

  4. SQL-fråga som skiljer mellan ß och ss