数组索引

来自 PostgreSQL Wiki
跳转到导航跳转到搜索

代码片段

数组索引

适用于 PostgreSQL

任何版本

SQL

依赖于

返回数组中某个值首次出现的索引。感谢 Sam Mason 提供此代码。

CREATE OR REPLACE FUNCTION idx(anyarray, anyelement)
  RETURNS int AS 
$$
  SELECT i FROM (
     SELECT generate_series(array_lower($1,1),array_upper($1,1))
  ) g(i)
  WHERE $1[i] = $2
  LIMIT 1;
$$ LANGUAGE sql IMMUTABLE;


它也可以用于排序。

SELECT *
FROM foo
ORDER BY idx(array['Freshman','Sophomore','Junior','Senior'], foo.grade_level)