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

Iterasi lebih dari integer[] di PL/pgSQL

DO
$do$
DECLARE
   a integer[] := array[1,2,3];
   i integer;                      -- int, not bigint
BEGIN
   FOR i IN 1 .. array_upper(a, 1)
   LOOP
      RAISE NOTICE '%', a[i];      -- single quotes
   END LOOP;
END
$do$;

Atau lebih sederhana dengan FOREACH di PostgreSQL 9.1 atau lebih baru:

   FOREACH i IN ARRAY a
   LOOP 
      RAISE NOTICE '%', i;
   END LOOP;

Untuk array multidimensi lihat:

  • Mengulangi dimensi array di plpgsql

Namun, solusi berbasis set dengan generate_series() atau unnest() seringkali lebih cepat daripada mengulang set besar. Contoh dasar:

  • PostgreSQL:Perluasan Tabel Frekuensi
  • Pilih setiap bulan antara tanggal mulai dan akhir

Cari tag generate-series atau unnest untuk lebih banyak lagi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah Tanggal menjadi Hari Julian di PostgreSQL

  2. Kesalahan intarray postgresql:simbol tidak terdefinisi:pfree

  3. Pustaka tidak dimuat:/usr/local/opt/readline/lib/libreadline.6.2.dylib

  4. Dapatkan waktu eksekusi kueri PostgreSQL

  5. Beralih dari MySQL ke PostgreSQL - tips, trik, dan paham?