array_positions() 是一个系统函数,它返回指定值在 数组 中每次出现时的下标(位置)。可以另外提供一个起始下标。
array_positions() 添加于 PostgreSQL 9.5。
用法
array_positions (anyarray,anyelement) →integer[]
提供的数组只能是单维的。
如果只想搜索某个值第一次出现的位置,请使用 array_position()。
变更历史
- PostgreSQL 9.5
- 添加于(提交 13dbc7a8)
示例
array_positions() 的基本用法示例
postgres=# SELECT array_positions(ARRAY[1,2,3,2,1], 1);
array_positions
-----------------
{1,5}
(1 row)
可以搜索 NULL 值
postgres=# SELECT array_positions(ARRAY[1,2,NULL,2,NULL], NULL);
array_positions
-----------------
{3,5}
(1 row)
尝试使用多维数组
postgres=# SELECT array_positions(ARRAY[[1,2,3],[1,2,3]], 2); ERROR: searching for elements in multidimensional arrays is not supported
参考资料
- PostgreSQL documentation: 数组函数
