蜂巢:如何检查一个数组中的值是否存在于另一个数组中?

库瓦利

我有两个这样的数组,它们是从我创建的UDF返回的:

阵列A-[P908,S57,A65]阵列B-[P908,S57]

我需要使用配置单元查询检查数组B中是否存在数组A的元素,或者数组A中是否存在数组B的元素。

我被困在这里。有人可以建议一种方法吗?

我是否还可以从UDF返回一些其他数据类型来代替数组,以使比较更加容易?

大卫·杜杜·马尔科维茨
select      concat(',',concat_ws(',',A),',') regexp 
                concat(',(',concat_ws('|',B),'),')  as are_common_elements
           
from        mytable
;

演示版

create table mytable (id int,A array<string>,B array<string>);

insert into table mytable 

                select  1,array('P908','S57','A65'),array('P908','S57')
    union all   select  2,array('P908','S57','A65'),array('P9','S5777')
;      

select * from mytable;

+------------+----------------------+----------------+
| mytable.id |      mytable.a       |   mytable.b    |
+------------+----------------------+----------------+
|          1 | ["P908","S57","A65"] | ["P908","S57"] |
|          2 | ["P908","S57","A65"] | ["P9","S5777"] |
+------------+----------------------+----------------+

select      id
           ,concat(',',concat_ws(',',A),',')    as left_side_of_regexp
           ,concat(',(',concat_ws('|',B),'),')  as right_side_of_regexp
           
           ,concat(',',concat_ws(',',A),',') regexp 
                concat(',(',concat_ws('|',B),'),')  as are_common_elements
           
from        mytable
;

+----+---------------------+----------------------+---------------------+
| id | left_side_of_regexp | right_side_of_regexp | are_common_elements |
+----+---------------------+----------------------+---------------------+
|  1 | ,P908,S57,A65,      | ,(P908|S57),         | true                |
|  2 | ,P908,S57,A65,      | ,(P9|S5777),         | false               |
+----+---------------------+----------------------+---------------------+    
          
          

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查一个数组中的元素是否存在于另一个数组中

检查所有数组值是否存在于另一个数组值中

检查对象值数组是否存在于另一个数组中,但长度不同

检查一个数组列表中的值是否存在于另一个数组列表中

雪花。如何检查子数组是否存在于另一个数组中?

检查数组的数组元素是否存在于python中的另一个数组中

逐列检查数组中的元素是否存在于另一个数组中

检查数组中的所有元素是否都存在于另一个数组中

检查键是否存在于另一个数组中并从中获取值并推送到另一个数组

检查一个值是否存在于两个或多个数组中

检查一个数组中的任何元素是否存在于另一个数组中

打字稿-一个数组中的检查值存在于另一个数组中

检查一个数组的元素是否存在于另一个数组中 - 在某个索引内

如果值存在于另一个数组中,如何递归过滤数组

从一个数组中删除存在于另一个数组中的项目?

使用 lodash 过滤对象数组并检查对象属性值是否存在于另一个数组中

Java8-数组项存在于另一个数组中

仅显示存在于另一个数组中的数组元素

如何检查数组中的每个元素以查看它是否存在于另一个数组中,并将第一个数组中的元素替换为其他元素?

jQuery如何检查一组对象是否存在于另一个数组对象中

如果一个数组中的值存在于另一个数组中,则返回数组

忽略对象中存在于JavaScript另一个数组中的键

PHP在一个数组中查找作为值存在于另一个数组中的键,然后拉回该值

使用numpy测试一个数组中的每个元素是否存在于另一个数组中的最有效方法

如果不存在于另一个数组中,如何删除数组中的对象

检查另一个数组中是否存在一个数组的值

如何检查当前数组中的对象是否存在于前一个数组中

查看值是否存在于多个数组中,如果存在则更改一个数组中的值

如何将一个数组添加到存在于mongodb对象中的另一个数组中