在BigQuery中判断两个数组相等的可靠简便方法是什么?
在BigQuery中可靠判断数组相等的简便方法
要实现类似以下代码的数组相等判断逻辑:
SELECT [1,2,3] = [1,2,3]
即直接判断两个数组arr1和arr2是否完全相等(元素值、类型、顺序均一致),可以参考以下方案:
不推荐的方案:使用TO_JSON_STRING转换对比
这种方法会丢失元素的类型信息,导致不同类型的等价值被误判为相等,比如日期类型DATE '2014-01-01'和字符串'2014-01-01'会被TO_JSON_STRING序列化为相同的字符串:
SELECT to_json_string([date '2014-01-01']) = to_json_string(['2014-01-01']) -- 返回 true,但实际两个数组元素类型不同,不应判定为相等
可靠方案:使用FORMAT('%T')函数格式化后对比
FORMAT('%T')会按照BigQuery的标准类型表示法序列化值,既能保留元素的类型信息,也会严格遵循数组的元素顺序,是判断数组相等的可靠方法:
SELECT FORMAT('%T', [date '2014-01-01']) = FORMAT('%T', ['2014-01-01']) -- 返回 false,符合预期
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

