假设在一个集合(嵌套集合)中,我具有值(1、2、3、4、5),在另一个集合b中,我具有值(5、6、7、8、9)。在这两个集合中,5是常见的。如何比较并返回5?
答案 0 :(得分:2)
假设您的意思是“收藏” Nested Table,则只需使用
TYPE NumberArray IS TABLE OF INTEGER;
ret := NumberArray(1,2,3,4,5) MULTISET INTERSECT NumberArray(5,6,7,8,9);
还要检查其他一些Multiset Operators和Multiset Conditions
如果您只需要“比较”(即“是否等于”),则只需使用
IF NumberArray(1,2,3,4,5) = NumberArray(5,6,7,8,9) THEN ...
答案 1 :(得分:0)
对于集合,您可以使用MULTISET INTERSECT
运算符:
CREATE TYPE intlist IS TABLE OF int;
DECLARE
a intlist := intlist(1,2,3,4,5);
b intlist := intlist(5,6,7,8,9);
c intlist;
BEGIN
c := a MULTISET INTERSECT b;
FOR i in 1 .. c.COUNT LOOP
DBMS_OUTPUT.PUT( c(i) || ',' );
END LOOP;
DBMS_OUTPUT.NEW_LINE();
END;
/
输出:
5,
我需要使用循环比较每个值。
遍历一个数组,然后使用MEMBER OF
运算符检查每个元素是否在另一个数组中:
DECLARE
a intlist := intlist(1,2,3,4,5);
b intlist := intlist(5,6,7,8,9);
c intlist;
BEGIN
c := intlist();
FOR i IN 1 .. a.COUNT LOOP
IF a(i) MEMBER OF b THEN
c.EXTEND;
c(c.COUNT) := a(i);
END IF;
END LOOP;
FOR i IN 1 .. c.COUNT LOOP
DBMS_OUTPUT.PUT( c(i) || ',' );
END LOOP;
DBMS_OUTPUT.NEW_LINE();
END;
/
还输出:
5,