WEB开发网
开发学院数据库Oracle Oracle10g中新的多重集运算符解析 阅读

Oracle10g中新的多重集运算符解析

 2007-05-09 12:11:49 来源:WEB开发网   
核心提示: select num multiset intersect num_tab_typ(1) num from num_tabNUM--NUM_TAB_TYP(1)NUM_TAB_TYP(1)NUM_TAB_TYP()多重集运算符UNION 返回的是这两个嵌套表中所有的值,并将这些值结合到一个

select num multiset intersect num_tab_typ(1) num from num_tab

NUM

--------------------------

NUM_TAB_TYP(1)

NUM_TAB_TYP(1)

NUM_TAB_TYP()

多重集运算符UNION 返回的是这两个嵌套表中所有的值,并将这些值结合到一个嵌套表中。如下例:

select num multiset union num_tab_typ(1) num from num_tab;

NUM

--------------------------

NUM_TAB_TYP(1, 2, 3, 4, 5, 1)

NUM_TAB_TYP(1, 3, 5, 1)

NUM_TAB_TYP(2, 4, 6, 1)

大家可以注意到,在嵌入表中的值不一定是唯一的。正如上面的例子,使用 UNION 运算符后,在最后的结果中有两项出现了重复的值。如果你想只保留嵌套表中不重复的值,那么你只需要向下面这个例子中一样,在语句中加上关键字DISTINCT 就可以除去重复的值。

select num multiset union distinct num_tab_typ(1) num from num_tab;

NUM

--------------------------

NUM_TAB_TYP(1, 2, 3, 4, 5)

NUM_TAB_TYP(1, 3, 5)

NUM_TAB_TYP(2, 4, 6, 1)

对于每个嵌套表的多重集运算符,都只会从每个集合中选择一个值来进行合并或者排除。也就是说在两个嵌套表中如果出现重复的值,那么对于重复的值只有一个会被除去。例如,num_tab_typ(1,1,2,3) MULTISET EXCEPT num_tab_typ(1,2,3) 的运行结果将会是num_tab_typ(1).

在 Oracle 10g 中,你可以比较两个嵌套表是否相等。只要这两个表中的元素个数相等并且值也相等,那么这两个嵌套表就是相等的,而与这两个表中元素的顺序无关。

select num from num_tab where num = num_tab_typ(1,3,5);
NUM
--------------------------
NUM_TAB_TYP(1, 3, 5)
select num from num_tab where num = num_tab_typ(1,5,3);
NUM
--------------------------
NUM_TAB_TYP(1, 3, 5)
select num from num_tab where num = num_tab_typ(1,1,3,5);
no rows selected

Tags:Oracleg 中新 多重

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接