sql >> Database teknologi >  >> RDS >> PostgreSQL

Itererer over heltal[] i 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$;

Eller enklere med FOREACH i PostgreSQL 9.1 eller nyere:

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

For multidimensionelle arrays se:

  • Loop over matrixdimension i plpgsql

Dog sæt-baserede løsninger med generate_series() eller unnest() er ofte hurtigere end at sløjfe over store sæt. Grundlæggende eksempler:

  • PostgreSQL:Udvidelse af frekvenstabel
  • Vælg hver måned mellem en start- og slutdato

Søg i tags generere-serier eller unnest for mere.




  1. Sådan kontrolleres om en tabel findes i et givet skema

  2. DevOps:DBA eller udvikler – Få balancen i orden

  3. Skal vi angive ikke null for primærnøgle? Oracle/SQL

  4. WAMP/MySQL-fejl er ikke på korrekt sprog