方式一 : 通过wm_concat函数,该函数在10g可以使用,11g 中不兼容,12g中去掉了该函数, ,返回类型为varchar
公司主营业务:网站制作、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出醴陵免费做网站回馈大家。
语法:wm_concat(列)
例子:Select wm_concat(Rownum) From dual Connect By Rownum < 10;
优点:语法简单
缺点:字符长度不能超过4000,以逗号分隔,如果要以其他符号分割,还要替换,性能比较差
方式二:通过lisagg
,
返回类型为varchar
语法: listagg(参数,‘分隔符’) within group(order by 参数id)
例子:Select
listagg(Rownum,';') Within group(Order By Rownum Desc)
From dual Connect By Rownum < 10;
优点:可以排序,并且可以自定义分隔符,效率也高
缺点:拼接字符长度不能超过4000
方式三:通过xmlagg,是解析MXL用的,也可以用作字符拼接,返回clob类型
语法:
XMLAGG(XMLPARSE(CONTENT 字段 || 分隔符 WELLFORMED) ORDER BY 字段).GETCLOBVAL()
或
XMLAGG(XMLELEMENT(e, 字符串 , 分隔符).Extract('//text()')).GETCLOBVAL()
例子:
可以使用下面两种之一:
Select Xmlagg(Xmlparse(Content Rownum || ',' Wellformed) Order By Rownum Desc)
.Getclobval()
From Dual
Connect By Rownum < 30000;
Select Xmlagg(Xmlelement(e, Rownum, ',').Extract('//text()')).Getclobval()
From Dual
Connect By Rownum < 30;
优点:对字符拼接没有长度限制
缺点:语法比较复杂
本文标题:oracle中多列转行
URL地址:https://www.cdcxhl.com/article20/jjgsjo.html
成都网站建设公司_创新互联,为您提供Google、做网站、网站排名、企业网站制作、动态网站、用户体验
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联