正 文

深入了解 Oracle 10g 中新的多重集运算符


www.7dspace.com  更新日期:2005-11-25 7:39:18  七度空间


除此之外,还有另外一个新的 SQL 子句,是用于判断某个值是否是一个嵌套表的成员。如下例所示:

select num from num_tab where 3 member of num;

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

select num from num_tab where 3 not member of num;

NUM
--------------------------
NUM_TAB_TYP(2, 4, 6)

你也可以通过使用 SUBMULTISET 来判断一个嵌套表是否是一个多重集的子集。

select num from num_tab where num_tab_typ(1,3,5) submultiset of num;

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

最后,还有一个非常有趣的函数——POWERMULTISET ,它可以得到某个给定的多重集的所有子集。下面给出了关于这个函数的一个例子:

create or replace type num_tab_tab_typ as table of num_tab_typ;
/
show errors;

select cast(powermultiset(num) as num_tab_tab_typ) from num_tab
where num = num_tab_typ(2,4,6);

CAST(POWERMULTISET(NUM)ASNUM_TAB_TAB_TYP)
--------------------------
NUM_TAB_TAB_TYP(NUM_TAB_TYP(2), NUM_TAB_TYP(4), NUM_TAB_TYP(2, 4),
NUM_TAB_TYP(6), NUM_TAB_TYP(2, 6), NUM_TAB_TYP(4, 6), NUM_TAB_TYP(2, 4, 6))

你还可以使用 POWERMULTISET_BY_CARDINALITY 来约束 POWERMULTISET 函数的返回结果,最后的结果必须满足其包含元素的个数等于某个指定的值。还是以上面的那个例子为例,下面有一段代码,功能是返回所有只包含了两个元素的子集。

select cast(powermultiset_by_cardinality(num,2) as num_tab_tab_typ) num
from num_tab
where num = num_tab_typ(2,4,6);

NUM
--------------------------
NUM_TAB_TAB_TYP(NUM_TAB_TYP(2, 4), NUM_TAB_TYP(2, 6), NUM_TAB_TYP(4, 6))

3页,页码:[1] [2] [3] 

上一篇:深入了解 Oracle 10g 中新型层次查询选项
下一篇:在tomcat和ant中使用jikes
作者:Scott Stephens  来源:开发者在线 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐