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

BigQuery:两个数组的Xoring元素

  •  2
  • john  · 技术社区  · 6 年前

    我有两个数组。

    b=[11,22,33,44]

    如何对两个数组的相应元素进行异或运算以得到结果

    结果=[10,20,34,40]即1^11=10,2^22=20,依此类推

    我尝试过位XOR(x),但它需要一个数组,并对数组中的所有元素进行XOR。

    SELECT BIT_XOR(x) AS bit_xor FROM UNNEST([1, 2, 3, 4]) AS x;
    

    谢谢

    1 回复  |  直到 6 年前
        1
  •  4
  •   Elliott Brossard    6 年前

    您可以将两个数组“压缩”到一起:

    SELECT
      ARRAY(
        SELECT x ^ b[OFFSET(off)]
        FROM UNNEST(a) AS x WITH OFFSET off) AS bit_xor
    FROM dataset.table
    

    这将根据元素在两个数组中的偏移量来组合元素。