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

ГРЕШКА:функцията unnest(integer[]) не съществува в postgresql

unnest() не е част от модула intarray , но на стандартния PostgreSQL. Вие обаче имате нужда от версия 8.4 или по-късно за това.

Така че можете да разрешите това, като надстроите до по-нова версия, за предпочитане текущата версия 9.1. Вижте правилата за версии на проекта PostgreSQL .

Ако трябва да използвате споделената база данни на Heroku, която в момента използва версия 8.3, те също търсят надстройка. Heroku Labs вече предлага 9.1 .

Както @Abdul коментира, можете да приложите unnest() на беден човек във версии преди PostgreSQL 8.4 себе си:

CREATE OR REPLACE FUNCTION unnest(anyarray)
  RETURNS SETOF anyelement AS
$BODY$
   SELECT $1[i] FROM generate_series(array_lower($1,1), array_upper($1,1)) i;
$BODY$ LANGUAGE sql IMMUTABLE;

Имайте предвид обаче, че това работи само за едномерни масиви . (За разлика от unnest() на PostgreSQL който приема масиви с множество измерения):

SELECT unnest('{1,2,3,4}'::int[])  -- works
SELECT unnest('{{1,2},{3,4},{5,6}}'::int[])  -- fails! (returns all NULLs)

Вие можете прилага повече функции за n-мерни масиви:

CREATE OR REPLACE FUNCTION unnest2(anyarray) -- for 2-dimensional arrays
  RETURNS SETOF anyelement AS
$BODY$
SELECT $1[i][j]
FROM  (
    SELECT i, generate_series(array_lower($1,2), array_upper($1,2)) j
    FROM  (
        SELECT generate_series(array_lower($1,1), array_upper($1,1)) i
        ) x
    ) y;
$BODY$ LANGUAGE sql IMMUTABLE;

Обаждане:

SELECT unnest2('{{1,2},{3,4},{5,6}}'::int[])  -- works!

Можете също така да напишете PL/pgSQL функция, която се занимава с множество измерения...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не мога да се свържа с PostgreSQL с PHP pg_connect()

  2. Какви са плюсовете и минусите на извършването на изчисления в sql спрямо във вашето приложение

  3. Не може да се свърже с локалния PostgreSQL

  4. Postgres - СЪЗДАВАНЕ НА ТАБЛИЦА ОТ SELECT

  5. Как да показвате нулеви стойности при изпълнение на заявки в psql (PostgreSQL)