Snowflake中如何基于Variant类型数组内的Id字段关联两张表
问题解决方案
问题根因
你写的SQL没有返回结果是两个原因导致的:
ARRAY_CONTAINS函数参数使用错误:该函数的语法为ARRAY_CONTAINS(数组, 待匹配元素),你给第二个参数套了array_construct()把t2.id包装成了数组,相当于在t1.id_array里查找数组类型的元素,自然没有匹配结果。- 数据类型不匹配:你的示例数据中
t1的id_array存储的是字符串格式的"1"、"2",而t2的id是整数类型,类型不一致也会导致匹配失败。
修正后的SQL
SELECT t1.id, t1.name, t2.name AS joined_name FROM t1 INNER JOIN t2 ON ARRAY_CONTAINS(t1.id_array, CAST(t2.id AS VARCHAR))
注:如果你的示例中
t1的数组字段实际名为ids_array(建表语句写的是id_array,示例数据里写的是ids_array,属于笔误),请把语句里的t1.id_array替换为t1.ids_array即可。
执行上述语句即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者T. Young
相关产品推荐
相关产品推荐

