YashanDB 使用 listagg 报 YAS-02511 的原因及解决方案
问题类型:功能使用
关键词:listagg、字符串拼接、YAS-02511
问题描述
在 SQL 查询中使用 listagg 函数对多行字符串进行拼接时,若拼接后的总长度超过 8000 字节,会报如下错误:
复制代码
原因分析
listagg 的拼接结果包括表达式与分隔符,合计不能超过 8000 字节。当拼接内容过长时将发生溢出,触发错误。
应对策略
可以使用 on overflow 子句来规避错误并控制输出行为:
on overflow error:默认行为,溢出时报错。
on overflow truncate '标志':发生溢出时截断输出,并添加自定义终止符。
with count:在终止符后附加拼接记录数,如 on overflow truncate '*' with count,系统会保留 26 个字节空间用于“终止标志+拼接条数”。
without count:仅截断输出,添加终止符但不显示被截断行数。
示例语法:
复制代码
适用版本
YashanDB 23.2.3.100
评论