arrays - 如何在 pl/pgsql 中获取 foreach 中的当前键?

标签 arrays postgresql loops foreach plpgsql

我遍历一个数组,并对数组值和它的键做一些事情。由于PostgreSQL 9.1有foreach循环,所以数组值是没有问题的,但是有什么优雅的方法来获取key吗?我找到的唯一解决方案是为此维护额外的变量:

CREATE OR REPLACE FUNCTION foobar( bar integer[] ) RETURNS integer AS $$
DECLARE
  foo integer;
  barkey integer;
BEGIN
  barkey := 1;
  FOREACH foo IN ARRAY bar LOOP
    -- do some stuff using foo and barkey
    barkey := barkey + 1;
  END LOOP;
END;
$$ LANGUAGE plpgsql;

这是最好的解决方案,还是有更优雅的方法?

最佳答案

FOREACH用于遍历数组值的元素,而不是通过它们的键。 FORgenerate_subscripts()可以用于此。

但一般情况下,数组的键和值之间应该没有关系。

关于arrays - 如何在 pl/pgsql 中获取 foreach 中的当前键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23650126/

相关文章:

sql - 为什么我的 float 在postgreSQL中显示为0

postgresql - 调试 PostgreSQL 用户定义函数

php - 经验丰富的新手的 Oracle 陷阱

线程中的 Java 异常 "main"java.lang.ArrayIndexOutOfBoundsException

java - mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;

java - Hangman 赋值和循环条件

loops - 哪个是更好的做法 - 带中断或条件循环的 for 循环?

excel - VBA查找和替换不适用于所有列

php - PHP while 循环中包含大量数据的 rowspan

java - 生成密码字母表