数组反转

来自 PostgreSQL 维基
跳转到导航跳转到搜索

库代码片段

反转数组的 SQL 函数

适用于 PostgreSQL

任何版本

SQL

取决于

PostgreSQL 没有提供内置的 array_reverse() 函数,所以这里提供一个供您使用。 它速度不快,但可以完成工作。

CREATE OR REPLACE FUNCTION array_reverse(anyarray) RETURNS anyarray AS $$
SELECT ARRAY(
    SELECT $1[i]
    FROM generate_series(
        array_lower($1,1),
        array_upper($1,1)
    ) AS s(i)
    ORDER BY i DESC
);
$$ LANGUAGE 'sql' STRICT IMMUTABLE;

对于 8.4 或更高版本,以下更正确的代码有效,因为它考虑了下标中的任何跳过。

CREATE OR REPLACE FUNCTION array_reverse(anyarray) RETURNS anyarray AS $$
SELECT ARRAY(
    SELECT $1[i]
    FROM generate_subscripts($1,1) AS s(i)
    ORDER BY i DESC
);
$$ LANGUAGE 'sql' STRICT IMMUTABLE;