Sql 数组_在配置单元中包含多个值
有没有一种方便的方法可以使用配置单元中的ARRAY_CONTAINS函数在一个数组列中搜索多个条目,而不仅仅是一个条目?因此,不是:Sql 数组_在配置单元中包含多个值,sql,hive,Sql,Hive,有没有一种方便的方法可以使用配置单元中的ARRAY_CONTAINS函数在一个数组列中搜索多个条目,而不仅仅是一个条目?因此,不是: WHERE ARRAY_CONTAINS(array, val1) OR ARRAY_CONTAINS(array, val2) 我想写: WHERE ARRAY_CONTAINS(array, val1, val2) 完全的问题是,当我运行脚本时,我需要动态地从命令行参数中读取val1和val2,我通常不知道有多少值会受到限制。因此,您可以将vals看作是一
WHERE ARRAY_CONTAINS(array, val1) OR ARRAY_CONTAINS(array, val2)
我想写:
WHERE ARRAY_CONTAINS(array, val1, val2)
完全的问题是,当我运行脚本时,我需要动态地从命令行参数中读取val1
和val2
,我通常不知道有多少值会受到限制。因此,您可以将vals
看作是一个逗号分隔的列表(或数组),其中包含值val1
、val2
、…
,我想编写
WHERE ARRAY_CONTAINS(array, vals)
提前谢谢 有一个UDF可以让您获取两个数组的交集。假设你的价值观具有结构
values_array = [val1, val2, ..., valn]
然后你就可以做了
where array_intersection(array, values_array)[0] is not null
如果它们没有任何公共元素,将返回[]
,因此[][0]
将为null
select*
从桌子上
侧视图分解(阵列)a为arr
其中arr in(VAL)
;
资料
[“雷尼尔”、“会合CX”、“世纪定制4dr”、“莱萨伯定制4dr”、“富豪LS 4dr”、“富豪GS 4dr”、“莱萨伯有限公司4dr”、“公园大道4dr”、“公园大道超4dr”]
返回
是的我和迪纳摩同舟共济,这仍然是最好的解决方案吗?是的,我想这是你最好的选择。
Create table tmp_cars AS Select make,COLLECT_LIST(TRIM(model))
model_List from default.cars GROUP BY make;
Select array_contains(model_List,CAST('Rainier' as varchar(40)))
FROM Default.tmp_cars t
where make = 'Buick';