我想检查一个数组中的所有项目是否都出现在另一个数组中。我一直在浏览 Snowflake 文档,但找不到任何好的方法。例如在 PostgreSQL 中,它很容易通过<@
(ie ARRAY[2,7] <@ ARRAY[1,7,4,2,6]
) 解决。关于如何在没有丑陋的黑客攻击的情况下优雅地解决它的任何想法?谢谢!
带有和大小的逻辑ARRAY_INTERSECTION
可以用 UDF 包装:
CREATE FUNCTION is_array_subarray (arr1 ARRAY, arr2 ARRAY)
RETURNS BOOLEAN
AS 'ARRAY_SIZE(ARRAY_INTERSECTION(arr1,arr2)) = ARRAY_SIZE(arr1)';
询问:
SELECT a1, a2, is_array_subarray (a1, a2) AS res
FROM (SELECT ARRAY_CONSTRUCT(2,7), ARRAY_CONSTRUCT(1,7,4,2,6)
UNION
SELECT ARRAY_CONSTRUCT(2,7,2), ARRAY_CONSTRUCT(1,7,4,2,6)
) AS s(a1, a2);
输出:
(*) 非独特元素的处理可能需要根据需要进行细化。这里需要完全匹配
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句