Adrian Billington 在他的文章collection extensions in 10g 中对10g增加的对collection增加的类似在SQL语句中的UNION, MINUS等集合操作有着详细的介绍。在10g之后,我们就可以像对两个SQL语句(其实也就是两个集合)那样来求两个collection的并集,差集等等。

 

下面是对该篇文章的摘要,

 

1. 比较两个collection是否相等

   可以直接用 = 来判断两个collection是否相等,即每个collection中的元素是否相等,不需要通过手动loop来遍历collection中的每个元素来比较。

 

2. CARDINALITY函数

  

   cardinality 函数类似于SQL中的COUNT函数,可以用来得到一个collection中元素的个数,注意是不管一个collection中是否有重复元素,它只是返回元素的总数。

 

   cardinality 函数既可以用在PL/SQL中,也可以直接应用于SQL语句中。

 

3. SET 函数

 

Set, 顾名思义,就是集合,自然是它包含的元素没有重复的,因此SET函数用来返回给定一个COLLECTION中唯一元素组成的COLLECTION。

因此如果想得到给定一个COLLECTION中的唯一的元素有几个,可以综合SET和CARDINALITY函数来用,就像下面这样,

SELECT CARDINALITY(SET(varchar2_ntt(‘A’, ‘A’, ‘B’, ‘C’))) from dual;

 

4. 可以通过 is (not) a set 来判断一个collection是否满足set的条件, 即内部没有重复元素

 

5. 可以通过 is (not) empty 来判断一个collection是否含有元素

 

6. submultiset conditions

 

  submultiset of 用来判断一个collection是不是另一个collection的子集。

 

   类似的,还有另外member condition, 不过不同的是member of 用来判断给定的字面常量(literal)或者绑定变量(bind vairables)是否存在一个collection中。

 

7. multiset 操作符

  这些操作符类似于SQL语句中的union, union all, minus等, 只不过是用来作用于collection上。

   下图给出了multiset操作符跟SQL中set操作符的对应关系,

   

[Oracle 10g]Collection Extensions in Oracle 10g

 

8. powermultiset 函数

这个函数不是很常用,用来返回给定一个collection中所有子元素的全排列组合,每个排列组合是一个collection。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-05-03
  • 2022-03-04
  • 2021-10-23
  • 2021-12-04
  • 2021-12-05
猜你喜欢
  • 2022-02-04
  • 2021-06-25
  • 2022-01-20
  • 2022-01-25
  • 2022-12-23
  • 2021-09-26
  • 2022-12-23
相关资源
相似解决方案