上一个内容是针对二维数组的列来过滤的,如果我们需要过滤整行呢?或者我们的需要过滤的结果集没有列(一维数组),我们如何进行过滤呢?
带着这个问题,我们需要先回顾下我们之前所学到的知识,事实上,我们这个问题是否非常类似于集合运算呢?以行为单位只要过滤子集中出现的内容,是否就是集合运算的交集呢?以行为单位去除掉过滤子集中出现的内容,是否就是集合运算的减集呢?
是的,在许多情况下,这种需求集合运算更为直观和合理,但是并不完全。因为集合运算的结果集表示
例如一维数组里的内容在另一个一维数组里边的和不在其中的,这类需求其实可以转化成为一个集合运算,在其中的则为交集,不在其中的为减集,但需要注意的是集合运算不可重复,而过滤运算则允许重复。
处理二维数组的行过滤以及处理一维数组,其关键则是将Field参数设置为NIL。
例如:array(1,2,3,4,5,5,6,7),过滤留下不在array(1,2,3,4)其中的结果
FilterNotIn(array(1,2,3,4,5,5,6,7),array(1,2,3,4),nil),其结果为array(5,5,6,7)
再如,结果集R,有字段A B C:
A B C
1 2 3
2 3 4
1 2 3
4 5 6
4 5 6
结果集R1有字段A B C:
A B C
1 2 3
2 3 4
我们要过滤掉保留R中存在于R1的:
FilterIn(R,R1,nil),其结果为:
A B C
1 2 3
2 3 4
1 2 3