postgres 中的动态 Case 语句

Dynamic Case statement in postgres

我有两个数组。两个数组都是从函数计算得出的,因此两个数组都是动态的,但两个数组的长度将相同。

a1= ARRAY[1,2,3];
a2= ARRAY[10,20,30];

现在我想更新我的 table 像这样

UPDATE TABLE SET data= CASE 
     data=a1[1] then a2[1]
     data=a1[2] then a2[2]
     data=a1[3] then a2[3]END
where id=1;

我尝试在 CASE 中添加循环,但它不起作用。

你可以利用array_position在数组1中找到匹配的索引,并使用这个索引查询数组2:

UPDATE TABLE 
SET data = a2[array_position(a1, data)]
WHERE id = 1;

http://rextester.com/CBJ37276