oracle学习笔记(八)行转列函数

一、listagg函数

语法

SELECT
    a.字段1,
    listagg (T.字段2, ',') WITHIN GROUP (ORDER BY a.字段2) b
FROM
    表A a
WHERE
    ( a.字段1='xx')
GROUP BY
    a.字段1

示例

使用listagg() WITH GROUP()将多行合并成一行(比较常用)

查询学生表,以体育成绩分组,查询各自的学生姓名

SELECT
    a.sports,
    listagg (a.name, ',') WITHIN GROUP (ORDER BY a.name) names
FROM
    student_table a
WHERE
    a.sports>='90'
GROUP BY
     a.sports

结果

LISTAGG 返回的是一个varchar2类型的数据,最大字节长度为4000。通常情况下,LISTAGG是满足需要的。但当字节长度超过4000时,就会报错。在这个时候,我们需要将LISTAGG函数改成XMLAGG函数。XMLAGG返回的类型为CLOB,最大字节长度为32767。

二、XMLAGG函数的例子:

XMLAGG(XMLPARSE(CONTENT 字段 || 字符串 WELLFORMED) ORDER BY 字段).GETCLOBVAL();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值