繁体   English   中英

访问 SQL 中的数组列 - 用于多个值

[英]Accessing array column in SQL - for multiple values

我有一个雪花数据库,它有一个数组列'EQUIVALENT'(正确的术语?)根据下面的 jpg

我发现我可以使用下面的代码访问单个值,

    WHERE EQUIVALENT[0] IN('A') OR EQUIVALENT[1] IN('A') OR EQUIVALENT[2] IN('A')

但是,这很笨拙,我需要 10 个 OR 语句来查看每个位置。 我实际上需要传递 200 个等价物,并找到生成的“零件”,因此希望以下变体可以返回找到的等价物和相关零件

    SELECT * FROM .....   WHERE EQUIVALENT IN('B','ZZ','G'....)

. 我对 SQL 比较陌生,因此 Snowflake 帮助中的术语真的没有帮助!

SQL 数组搜索

您可以使用数组函数

where array_size(array_intersection(equivalent, array_construct('B', 'ZZ', 'G' . . .))) > 0

您可以使用 ARRAYS_OVERLAP(<array1>, <array2>):

比较两个 arrays 是否具有至少一个共同元素。 如果至少有一个共同元素,则返回 TRUE; 否则返回 FALSE。 function 是 NULL 安全的,这意味着它将 NULL 视为比较相等性的已知值。

WHERE ARRAYS_OVERLAP(ARRAY_CONSTRUCT('B', 'ZZ', 'G', ...), equivalent);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM