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;
我有两个数组。两个数组都是从函数计算得出的,因此两个数组都是动态的,但两个数组的长度将相同。
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;