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

カスタムドメインpostgresの配列を作成する

    別の可能な回避策は次のとおりです。

    CREATE TYPE foo_tup AS (item foo);
    

    ドメインタイプはこのようなタプルでラップでき、配列コンストラクターを提供します。欠点は、おそらくキャストを作成したいということです:

    select array[row('foo')::foo_tup, row('bar')];
    

    たとえば、関数とキャストを作成できます。

    create function foo_tup(foo) returns foo_tup language sql as $$
        select row($1)::foo_tup;
    $$ immutable;
    create function foo(foo_tup) returns foo language sql as $$
         select $1.item;
    $$;
    create cast (foo as foo_tup) with function foo_tup(foo);
    create cast (foo_tup as foo) with function foo(foo_tup);
    

    そうすれば、集約が簡単になります:

    select array_agg(myfoo::foo_tup) from my_table; 
    

    余分な括弧がありますが。




    1. Mysql ::Error:重複したエントリ

    2. Oracleでセッションの通貨記号を変更する方法

    3. テーブルの列の種類を変更する

    4. PostgreSQL-制限付きの2つのテーブルを内部結合します