PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Iteration über integer[] in 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$;

Oder einfacher mit FOREACH in PostgreSQL 9.1 oder höher:

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

Für mehrdimensionale Arrays siehe:

  • Array-Dimension in plpgsql durchlaufen

Set-basierte Lösungen jedoch mit generate_series() oder unnest() sind oft schneller als das Schleifen über große Sets. Grundlegende Beispiele:

  • PostgreSQL:Häufigkeitstabellenerweiterung
  • Wählen Sie jeden Monat zwischen einem Start- und Enddatum aus

Durchsuchen Sie die Tags generate-series oder unsest nach mehr.