代码之家  ›  专栏  ›  技术社区  ›  Somil

postgres中的动态case语句

  •  1
  • Somil  · 技术社区  · 6 年前

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

    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;
    

    我试着在箱子里加一个回路,但没用。

    1 回复  |  直到 6 年前
        1
  •  1
  •   JGH    6 年前

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

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

    http://rextester.com/CBJ37276