如何在Presto SQL中判断一个数组是否包含另一个数组的任意元素
Presto SQL判断数组是否包含指定参考数组任意元素的实现方法
你可以直接使用Presto内置的arrays_overlap()函数完成该需求,该函数的作用是判断两个输入数组是否存在公共元素,存在则返回TRUE,无任何交集则返回FALSE,完全匹配你提的判定规则。
具体使用示例
假设参考数组固定为['chair', 'desk', 'charger'],待判定的数组存储在表your_table的target_arr字段中,查询写法如下:
SELECT target_arr, arrays_overlap(target_arr, ARRAY['chair', 'desk', 'charger']) AS has_common_element FROM your_table;
对应你给出的三个测试用例,返回结果如下:
- 待判定数组为
["chair","desk"]:返回true - 待判定数组为
["screen","charger","computer"]:返回true - 待判定数组为
["calendar", "screen"]:返回false
补充说明
如果需要忽略元素大小写进行匹配,可以先通过transform函数统一将两个数组的元素转为全小写/全大写再比对:
SELECT arrays_overlap( transform(target_arr, element -> lower(element)), transform(ARRAY['chair', 'desk', 'charger'], element -> lower(element)) ) AS has_common_element_case_insensitive FROM your_table;
内容的提问来源于stack exchange,提问作者Stats DUB01
相关产品推荐
相关产品推荐

