深入了解Oracle10g中新的多重集运算符(下)

文章作者 100test 发表时间 2007:03:14 13:40:33
来源 100Test.Com百考试题网


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

0select num from num_tab where 3 member of num.

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

0select num from num_tab where 3 not member of num.

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

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

0select 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.

0select 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 函数的返回结果,最后的结果必须满足其包含元素的个数等于某个指定的值。还是以上面的那个例子为例,下面有一段代码,功能是返回所有只包含了两个元素的子集。

0select 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))



相关文章


SP封面文章:Oracle在华陷入光辉孤立
深入了解Oracle10g中新的多重集运算符(上)
Oracle中空扩音机玩味浓
Oracle中巧取指定记录与巧用外关联查询
深入了解Oracle10g中新的多重集运算符(下)
Oracle中空间管理对系统性能的影响
深入了解Oracle10g中新的多重集运算符(中)
Oracle升级许可模型
甲骨文公布第二财季报告成绩可喜
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛