xmlagg函数的使用--课表视图

本文介绍了如何使用Oracle数据库的xmlagg函数来解决行转列的问题,特别是在处理字符串拼接时遇到的长度限制和null值问题。xmlagg能够优雅地处理null值,但可能需要额外处理多余的拼接符号。对比了xmlagg、listagg和vm_concat函数的适用情况。
摘要由CSDN通过智能技术生成

需求

将老师一周中同一大节的课表信息整理到同一条记录里,不同星期对应不同的列。(涉及到字符串拼接、行转列)

常见的行转列函数有vm_concat、listagg、xmlagg等,但是oracle12g不支持vm_concat,而且前两个函数在拼接字符串的时候容易出现拼接结果过长、字符串缓冲区过小等问题,难搞。xmlagg就可以完美解决这个问题,拼接字段中出现null也不影响,唯一的不足就是多个null拼接时,xmlagg并不能自动省去,最后需要处理下多余的拼接符号,不然难看。

xmlagg函数用法

xmlagg函数需要将输入的值转换为xml,处理返回结果也是xml,最后再用getclobval()获取colb类型的结果。

xmlagg(xmlelement(表名, 输入值1,输入值2) order by 参数).extract('//text()').getclobval() 

输入值就是要拼接的字段和连接符,顺序随意,xmlagg就是把两个输入值拼在一起,连接符在前在后都一样,最后都是要处理下多余的字符的

listagg函数用法

listagg(参数, '分隔符') within group(order by 参数)

vm_concat函数用法

vm_concat(参数)


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值