错误:postgresql中不存在函数unnest(整数[])

错误:postgresql中不存在函数unnest(整数[]),postgresql,rails-postgresql,postgresql-9.0,postgresql-8.4,Postgresql,Rails Postgresql,Postgresql 9.0,Postgresql 8.4,执行上述查询时,我得到如下错误: SELECT UNNEST(ARRAY[1,2,3,4]) 我使用的是PostgreSQL 8.3,我已经在我的数据库中安装了用于整数数组操作的\u int.sql包 如何解决此错误?unnest()不是模块intarray的一部分,而是标准PostgreSQL的一部分。不过,我感谢你 因此,您可以通过升级到更新的版本来解决此问题,最好是当前的9.1版本。看 如果您应该使用Heroku的共享数据库(目前使用的是8.3版),他们也在考虑升级 正如@Abdul所

执行上述查询时,我得到如下错误:

SELECT UNNEST(ARRAY[1,2,3,4])
我使用的是PostgreSQL 8.3,我已经在我的数据库中安装了用于整数数组操作的
\u int.sql

如何解决此错误?

unnest()
不是模块
intarray
的一部分,而是标准PostgreSQL的一部分。不过,我感谢你

因此,您可以通过升级到更新的版本来解决此问题,最好是当前的9.1版本。看

如果您应该使用Heroku的共享数据库(目前使用的是8.3版),他们也在考虑升级


正如@Abdul所评论的,您可以自己在PostgreSQL 8.4之前的版本中实现穷人的
unnest()

ERROR: function unnest(integer[]) does not exist in postgresql.
但是,请注意,这仅适用于一维数组。(与PostgreSQL的
unnest()
相反,后者采用多维数组):

您可以为n维数组实现更多函数:

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


您还可以编写一个PL/pgSQL函数来处理多个维度…

谢谢您的回复。(CREATE或REPLACE FUNCTION unnest(anyarray)将anyelement的集合返回为$BODY$SELECT$1[i],通过创建这样的函数,我在postgresql 8中实现了unnest函数。3@AbdulRafiu:是的,应该可以。我在回答中加入了你的评论,并加了一点。
SELECT unnest('{1,2,3,4}'::int[])  -- works
SELECT unnest('{{1,2},{3,4},{5,6}}'::int[])  -- fails! (returns all NULLs)
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!