PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Buat array postgres domain khusus

Solusi lain yang mungkin adalah:

CREATE TYPE foo_tup AS (item foo);

Jenis domain dapat dibungkus dengan tupel seperti ini dan itu memberi Anda konstruktor array. Kelemahannya adalah sekarang Anda mungkin ingin membuat gips:

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

Misalnya Anda dapat membuat fungsi dan pemeran:

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);

Maka agregasi menjadi mudah:

select array_agg(myfoo::foo_tup) from my_table; 

meskipun Anda mendapatkan tanda kurung tambahan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menggunakan fungsi PostgreSQL upper() dengan lokal yang berbeda?

  2. Pasangan nilai kunci di PostgreSQL

  3. tidak dapat membuat kueri RDS di heroku

  4. Untuk apa '$$' digunakan di PL/pgSQL

  5. Bisakah kita selalu mengambil kolom tanggal sebagai string (varchar) dengan knex dan postgres?