sql >> データベース >  >> RDS >> PostgreSQL

関数から返された配列を列に変換するPostgreSQL

    副選択を使用できますか?

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

    これでも、(すでに行っているように)各列を明示的に抽出する必要があります。配列に抽出された要素よりも多くの要素がある場合、それらは失われます。要素が少ない場合、欠落している列はNULLになります。 。

    編集:私はすべてを副選択でラップすると思います。内側の副選択により、目的のが生成されます 、外側の選択で内側のクエリを目的のに投影します :

    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;
    

    内側と外側の選択は、table1を適切に相関させます 参照。



    1. 結合された継承の外部キー名をJPA/Hibernateでオーバーライドします

    2. MySQLクエリで複数の合計を選択し、それらを別々の列に表示します

    3. MySQLで文字列を実行することは可能ですか?

    4. MySQL/InnoDBおよび実行時間の長いクエリ