PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Итерация над integer[] в 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$;

Или по-просто с FOREACH в PostgreSQL 9.1 или по-нова версия:

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

За многоизмерни масиви вижте:

  • Обръщане на измерение на масив в plpgsql

Въпреки това, базирани на набор решения с generate_series() или unnest() често са по-бързи от превъртането през големи набори. Основни примери:

  • PostgreSQL:Разширяване на таблицата с честоти
  • Избирайте всеки месец между начална и крайна дата

Потърсете маркерите generate-series или unnest за повече.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за последните N свързани реда на ред

  2. Увеличете стойност в Postgres

  3. Събитието ROLLBACK се задейства в postgresql

  4. [Видео] Интегриране на данни с PostgreSQL

  5. PostgreSQL планета в Ansible Galaxy