您当前的位置: AG亚游集团 > 数据库教程 > Oracle教程 > 关于oracle字符串汇总

关于oracle字符串汇总

作者:不详 来源:网络 发布时间: 2014-09-01 11:48 点击: 次
使用的代码 代码如下 -- sample data drop table t_collect purge; create table t_collect as select mod(rownum,30) as flag, lpad(dbms_random.string('l',3),4,' ') as val from dual connect by rownum=10000; collect函数(Oracle10g) -- 1: use collect funtion

AG亚游集团,  除此之外,这款游戏本的内存提供了单条4GB内存,用户如果对内存需求过高,还可以手动扩展一条内存。硬盘方面,采用了机械硬盘+固态硬盘的搭配,其中机械硬盘提供了1T大容量硬盘,固态硬盘提供了128GB容量的固态硬盘。这款游戏本搭载了Intel第7代酷睿i5-7300HQ处理器和最新的NVIDIA GTX 1050独立显卡。有感兴趣的玩家可以现在入手。

  雅虎和赛门铁克表示,双方将通过雅虎的网络营销共同冠名的Norton互联网安务,雅虎的网络服务包括雅虎邮件(Yahoo Mail)、雅虎工具栏(Yahoo Toolbar)、雅虎搜索(Yahoo Search)以及其它在线服务。怎么赚钱快 现实点的  8月2日,奇虎公司对外表示,其360安全卫士软件遭遇恶意软件反击,虽然没有透露名字,但其论坛内容直指雅虎中国的网络实名,而3721正是周鸿祎此前给雅虎的产品。

关于oracle字符串汇总

  使用的代码

  代码如下

  -- sample data

  drop table t_collect purge;

  create table t_collect as

  select mod(rownum,30) as flag, lpad(dbms_random.string('l',3),4,' ') as val

  from dual connect by rownum<=10000;

  collect函数(Oracle10g)

  -- 1: use collect funtion

  select flag,

      my_tk.f_list2str(cast(collect(trim(val)) as my_tk_str_tab_type)) as ename

  from t_collect sample(10)

  group by flag

  order by 1;

  sys_connect_by_path

  -- 2: use sys_connect_by_path and row_number function

  select t1.flag, substr(max(sys_connect_by_path(t1.val, ',')), 2) q

  from (select a.flag,

              trim(a.val) as val,

              row_number() over(partition by a.flag order by a.val) rn

         from t_collect sample(10) a) t1

  start with t1.rn = 1

  connect by t1.flag = prior t1.flag

      and t1.rn - 1 = prior t1.rn

  group by t1.flag

  order by 1;

  user-defined-function

  -- 3: use user-defined-function

  select flag,

      string_agg(trim(val)) as ename

  from t_collect sample(10)

  group by flag

  order by 1;

  辅助用的my_tk包代码片段

  代码如下

  create or replace type my_tk_str_tab_type is table of varchar2(100);

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

  function f_list2str

  (

  p_list   my_tk_str_tab_type,

  p_separator varchar2 default ',',

  p_sort   integer default 1

  ) return varchar2 is

  l_idx pls_integer := 0;

  l_str varchar2(32767) := null;

  l_spt varchar2(10) := null;

  l_list my_tk_str_tab_type := p_list;

  begin

  if p_sort = 1 then

     l_list := f_sort_list(p_list);

  end if;

  l_idx := l_list.first;

  while l_idx is not null loop

     l_str := l_str || l_spt || l_list(l_idx);

     l_spt := p_separator;

     l_idx := l_list.next(l_idx);

  end loop;

  return l_str;

  end;

  自定义聚合函数

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

  代码如下

  -- user-defined-function

  CREATE OR REPLACE TYPE t_string_agg AS OBJECT

  (

  g_string VARCHAR2(32767),

  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)

  RETURN NUMBER,

  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,

                                      value IN   VARCHAR2 )

    RETURN NUMBER,

  MEMBER FUNCTION ODCIAggregateTerminate(self      IN t_string_agg,

                                        returnValue OUT VARCHAR2,

                                        flags     IN NUMBER)

  RETURN NUMBER,

  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,

                                    ctx2 IN   t_string_agg)

  RETURN NUMBER

  );

  /

  CREATE OR REPLACE TYPE BODY t_string_agg IS

  STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)

  RETURN NUMBER IS

  BEGIN

  sctx := t_string_agg(NULL);

  RETURN ODCIConst.Success;

  END;

  MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,

                                      value IN   VARCHAR2 )

  RETURN NUMBER IS

  BEGIN

  SELF.g_string := self.g_string || ',' || value;

  RETURN ODCIConst.Success;

  END;

  MEMBER FUNCTION ODCIAggregateTerminate(self      IN t_string_agg,

                                        returnValue OUT VARCHAR2,

                                        flags     IN NUMBER)

  RETURN NUMBER IS

  BEGIN

  returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');

  RETURN ODCIConst.Success;

  END;

  MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,

                                    ctx2 IN   t_string_agg)

  RETURN NUMBER IS

  BEGIN

  SELF.g_string := SELF.g_string || ',' || ctx2.g_string;

  RETURN ODCIConst.Success;

  END;

  END;

  /

  CREATE OR REPLACE FUNCTION string_agg (p_input VARCHAR2)

  RETURN VARCHAR2

  PARALLEL_ENABLE AGGREGATE USING t_string_agg;

  /

  最后给个参考表

  在数据量10000的表上进行三种方法的测试,运行时间单位秒

  数据量PCT Collect   SYS_Connect    UDF

        1%         0.017          0.018         0.017

        10%      0.026         0.050         0.029

        50%       0.057           2.45          0.065

       100%      0.090          5.00           1.06
本文"关于oracle字符串汇总"由远航站长收集整理而来,仅供大家学习与参考使用。更多AG亚游集团尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(AG亚游集团). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类AG亚游集团.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4
美官员:B52轰炸机本周曾取消参加与韩方的一项军演 哈尔滨江面多名男子打游客收成捆人民币?当地回应 1.5亿元先生不甘做三把手!他已开始私下抱怨 阿尔及利亚一架军机坠毁 致数人死亡 美退役军官:中国大陆最迟或在2030年“武统台湾” 发球衣视频告别赛场?杨鸣:我发着玩的 中国大使在WTO总理事会上反驳美对华经济模式指责 美三州州长抛开政府自组“禁枪联盟” 规模或扩大 鲁媒:高准翼留华夏已板上钉钉 本场首发或弃佩莱 快手CEO宿华发文道歉:将用正确的价值观指导算法 淘宝店主售有害减肥药被提公益诉讼 自称不懂法 女佩小将邵雅琦挑落世界第一 曾假崴脚逃避训练
前迈凯轮CEO惠特马什重返F1:协助FIA制定新规则 315晚会曝光道路标线偷工减料 交通部已派督查组 长沙共享单车新政:押金专款专用,需为用户购意外险 逗妹看球:欧洲四大联赛流水账总结! 库存降速放缓钢价显露疲态 5月中下旬或是多空转折点 俄减持八成美债 俄央行行长:为了实现资产配置多元化 美朝领导人在哪会面:排斥平壤华盛顿 这里更安心 北京篮协祝贺北京女篮夺冠:七年四冠可歌可振 新浪杯未来之星承办地:“桃花源”无锡阳山马术学府 撕掉“亏损”标签,京东也丢掉了“增长” 红十字会“收支”拟纳入审计监督范围 车主奔驰车标被偷后加小偷微信想要回 结局没想到
欧盟:Facebook确认270万欧洲人的数据被不当共… 巴拉圭将是台湾的下一个“断交国”?国台办回应 日媒:美挑起对华贸易摩擦 世界经济不安情绪加剧 韩媒:越南劳务费低于中国 韩企积极拓展当地市场 持仓报告:走势难料 标普500期货投机多仓现大幅背离 恒大刷数据呢?射门数29-5比分却2-2 低谷出不去了 滴滴涉无证驾驶:佛山44万在册车仅两千司机身份明确 英媒:孕妇少量饮酒也会拉低孩子智商 新疆传达杨晶违纪问题:在各种诱惑面前要立场坚定 养一百只土鸡利润多少 谁帮我杀人我给钱 怎么赚钱快 现实点的 白手起家做什么好 AG亚游集团