oracle listagg的 截取长度限制有没有啥方法解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle listagg的 截取长度限制有没有啥方法解决相关的知识,希望对你有一定的参考价值。

参考技术A 实现这个需求的语句是这样的:
select name,
listagg(ddate,' / ') within group (order by name) as ddate
from aa
group by name

需要注意的事项如下:
1. 必须得分组,也就是说group by是必须的。
2. listagg函数的第一个参数是需要进行枚举的字段,也就是ddate;第二个参数是枚举数值之间的分隔符;同时还需要进行排序和分组within group (order by name)
参考技术B xmlagg(xmlparse(content pm10||',' wellformed) order by pm10).getclobval() AS employees
-- LISTAGG(pm10, ',') WITHIN GROUP (ORDER BY pm10) AS employees

DB2中截取字段以及排序问题

现在表中有几串字符,这些字符是由ID+序列号组合而成,我想用序列号进行降序排列,但是这些ID长度可能不确定,有的可能是一位,有的可能是三位。这个语句在DB2中该怎么写?

要是ID的长度无法确定,就试着看看序列号的长度能不能确定,这样你就能通过字符串的长度减去序列号的长度来得来ID的长度。
ORDER BY SUBSTRING(字符串, 1, LENGTH(字符串) - 序列号长度)
参考技术A 那就要看你的ID和你的序号之间有没有什么规律了,如果都是数字,或都是字符,再就是中间没有加上个字符相隔的话,就是你建字段有问题了,好好看下你的数据吧有没有什么规律可找!

以上是关于oracle listagg的 截取长度限制有没有啥方法解决的主要内容,如果未能解决你的问题,请参考以下文章

oracle行转列,列转行函数的使用(listagg,xmlagg)

oracle 超长字符串连接问题

oracle限制字符串长度

DB2中截取字段以及排序问题

oracle 字符串拼接慢不慢

Oracle SQL:如何删除 listagg 中的重复项