postgres中的动态Case语句

时间:2018-05-30 12:28:05

标签: sql arrays postgresql postgresql-10

我有两个阵列。两个数组都是根据函数计算的,因此两个数组都是动态的,但两个数组的长度都是相同的。

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

现在我想更新我的表格

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中添加循环,但它无效。

1 个答案:

答案 0 :(得分:1)

您可以使用array_position在数组1中查找匹配的索引,并使用此索引查询数组2:

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

http://rextester.com/CBJ37276