A:
相关支持的介绍
天软平台上,可通过多种方式取得两个数组的交集、并集和差集。
通过矩阵集合运算关键字intersect、union2、minus(一维或二维数组均适用)
注意:集合的交并差集运算是
以行为单位的,而不是以单元格为单位。
另,还有Outersect对称差集运算符,是减去重复行的并集。
相关函数有:
FilterIntersectionPart2(用于一维数组):求两个一维数组的差集、交集、并集;
FilterIntersectionPart(用于二维数组):求两个数组在
指定列名上的差集、交集、并集;
通过矩阵集合运算关键字范例如下:
一维数组
t1:=array(3,2,8);
t2:=array(9,1,8,3);
return t1 Outersect t2; //对称差集-array(2,9,1)
return t1 minus t2; //差集-返回array(2);
return t1 union2 t2; //并集-返回array(3,2,8,9,1);
return t1 intersect t2; //交集-返回array(3,8);
{下面以intersect为例展示不同数据类型的一维数组中的用法,注意根据返回结果进行功能的区别
其它union2、minus、Outersect都适用
}
//多表交集用法-二维数组也支持
t1:=array(3,2,8);
t2:=array(9,1,8,3);
t3:=array(1,8);
return t1 intersect t2 intersect t3;//返回array(8)
//支持序列中为字符串
t1:=array('c',2,'a');
t2:=array('a',1,'b',3);
return t1 intersect t2;//返回array("a")
//注意在表元素中值array(1,2)与array(2,1)是不相等的
t1:=array('c',2,array(1,2));
t2:=array('a',1,array(2,1),2);
return t1 intersect t2;//返回array(2)
t1:=array('c',2,array(2,1));
t2:=array('a',1,array(2,1),2);
return t1 intersect t2;//返回array(2,(2,1))
a := array(1,2,3,4);
b := array(3,4,5,6);
r := array();
r['交集'] := a intersect b;
r['并集'] := a union2 b;
r['差集'] := a minus b;
return r;
返回结果:
二维数组
用法与一维数组一致,以行为最小判断单位,即行完全一致才能判断相同
t1:=array(('a':1,'b':2),('a':2,'b':17),('a':2,'b':12));
t2:=array(('a':3,'b':22),('a':1,'b':2),('a':2,'b':12));
t3:=array(('a':1,'b':2),('a':2,'b':2));
return t1 intersect t2 intersect t3;//返回array(("a":1,"b":2))
a := array(('a':1),('a':2),('a':3),('a':4));
b := array(('a':3),('a':4),('a':5),('a':6));
return a union2 b;\\并集
返回结果:
函数范例如下:
一维数组
通过函数FilterIntersectionPart2
a := array(1,2,3,4);
b := array(3,4,5,6);
r := array();
r['交集'] := FilterIntersectionPart2(a,b,'IN');
r['并集'] := FilterIntersectionPart2(a,b,'ALL');
r['差集'] := FilterIntersectionPart2(a,b,'NOT IN');
return r;
返回结果:
二维数组
通过函数FilterIntersectionPart
a := array(('a':1),('a':2),('a':3),('a':4));
b := array(('a':3),('a':4),('a':5),('a':6));
return FilterIntersectionPart(a,b,'a','ALL');//并集
返回结果: