访问 SQL 中的数组列 - 对于多个值
Accessing array column in SQL - for multiple values
我有一个 Snowflake 数据库,它有一个数组列 'EQUIVALENT'(正确的术语?)按照下面的 jpg
我发现我可以使用下面的代码访问单个值,
WHERE EQUIVALENT[0] IN('A') OR EQUIVALENT[1] IN('A') OR EQUIVALENT[2] IN('A')
但是,这很笨拙,我需要 10 个 OR 语句来查看每个位置。我实际上需要传递 200 个等价物,并找到生成的“部分”,因此希望有以下变体 return 找到的等价物和相关部分
SELECT * FROM ..... WHERE EQUIVALENT IN('B','ZZ','G'....)
。我对 SQL 比较陌生,因此 Snowflake 帮助中的术语真的没有帮助!
您可以使用 array functions.
where array_size(array_intersection(equivalent, array_construct('B', 'ZZ', 'G' . . .))) > 0
您可以使用 ARRAYS_OVERLAP( , ):
比较两个数组是否至少有一个共同元素。 Returns 如果至少有一个共同元素则为真;否则 returns 错误。该函数是 NULL 安全的,这意味着它将 NULL 视为比较相等性的已知值。
WHERE ARRAYS_OVERLAP(ARRAY_CONSTRUCT('B', 'ZZ', 'G', ...), equivalent);
我有一个 Snowflake 数据库,它有一个数组列 'EQUIVALENT'(正确的术语?)按照下面的 jpg
我发现我可以使用下面的代码访问单个值,
WHERE EQUIVALENT[0] IN('A') OR EQUIVALENT[1] IN('A') OR EQUIVALENT[2] IN('A')
但是,这很笨拙,我需要 10 个 OR 语句来查看每个位置。我实际上需要传递 200 个等价物,并找到生成的“部分”,因此希望有以下变体 return 找到的等价物和相关部分
SELECT * FROM ..... WHERE EQUIVALENT IN('B','ZZ','G'....)
。我对 SQL 比较陌生,因此 Snowflake 帮助中的术语真的没有帮助!
您可以使用 array functions.
where array_size(array_intersection(equivalent, array_construct('B', 'ZZ', 'G' . . .))) > 0
您可以使用 ARRAYS_OVERLAP(
比较两个数组是否至少有一个共同元素。 Returns 如果至少有一个共同元素则为真;否则 returns 错误。该函数是 NULL 安全的,这意味着它将 NULL 视为比较相等性的已知值。
WHERE ARRAYS_OVERLAP(ARRAY_CONSTRUCT('B', 'ZZ', 'G', ...), equivalent);