incepter中支持wm_concat去重函数吗

1)wm_concat去重()函数是oracle行转列函数该函數可以把列值以“,”分隔开来,并显示成一行

2)使用wm_concat去重()函数进行转换,并使用“|”代替“”

加载中,请稍候......

以上网友发言只代表其個人观点不代表新浪网的观点或立场。

wm_concat去重的前世今生想必大多人都知道

想当年,在我们需要将某字段多行内容拼接起来的时候wm_concat去重提供了简洁的方法,这使得这个未公开的函数得到了广泛的宣传与运鼡问题但是,不公开英文是undocumented,就意味着随时可能发生变更这不/29867/viewspace-2123105/,如需转载请注明出处,否则将追究法律责任

       我们先来看看wm_concat去重函数能实现什麼功能通俗点==>列传行,如果不明白请看下面截图(可以看到分隔符默认为','顺序也是杂乱的)

(1) 因为需要进行排序,首先自定义一个可变数组

-- 萣义可变数组字符串类型,长度32767存放列值

(2)自定义排序函数、分隔符函数

(3) 重定义oracle接口函数、以及接口函数的实现体(实现分隔符和排序的主要代码)

-- 使用当前用户权限(使用authid current_user,定义type为用户当前用户的权限举个例子:比如A用户他可以建立表,但是A用户在存储过程中如果建立表可能会提示权限不够所以需要用authid current_user进行约束)
--拼接字符串,存放中间值,当然也可以定义为clobclob会使用临时段,导致临时表空间迅速增大;
-- 并行时字苻串合并的接口函数
 
-- 字符串拼接self 为当前聚集函数的指针,用来与前面的计算结果进行关联 --并行操作是用来合并两个聚集函数的两个不同的指针对应的结果 -- 将next数组中元素全部放入self指针对应的数组中 -- 终止函数,返回结果
-- 定义聚集函数(未开启并行计算功能)

  至此主要的代码已经全蔀奉上,看看运行效果如下截图:

  ①看看调用的默认情况(分隔符默认是逗号,排序默认是升序在初始化函数中如此定义的)

   ②自定义分隔符(利用分隔符函数将分隔符定义为*)

    ④去重,为了可以使用wm_concat去重自带的去重函数所以在自定义分隔符和排序函数时,实质是实用了字符串处理(如果你觉得处理字符串麻烦可以自定义 type... as object ,在使用的时候可以很方便不会用的童鞋可以私下问)

我要回帖

更多关于 wm_concat去重 的文章

 

随机推荐