ITPub博客

首页 > 数据库 > 数据库开发技术 > YashanDB 使用 listagg 报 YAS-02511 的原因及解决方案

YashanDB 使用 listagg 报 YAS-02511 的原因及解决方案

原创 数据库开发技术 作者:makabala 时间:2025-05-16 20:13:52 0 删除 编辑

问题类型:功能使用

关键词:listagg、字符串拼接、YAS-02511

问题描述

在 SQL 查询中使用 listagg 函数对多行字符串进行拼接时,若拼接后的总长度超过 8000 字节,会报如下错误:

YAS-02511: result of string concatenation value exceeds maximum length of 8000 characters

原因分析

listagg 的拼接结果包括表达式与分隔符,合计不能超过 8000 字节。当拼接内容过长时将发生溢出,触发错误。

应对策略

可以使用 on overflow 子句来规避错误并控制输出行为:

on overflow error:默认行为,溢出时报错。

on overflow truncate '标志':发生溢出时截断输出,并添加自定义终止符。

with count:在终止符后附加拼接记录数,如 on overflow truncate '*' with count,系统会保留 26 个字节空间用于“终止标志+拼接条数”。

without count:仅截断输出,添加终止符但不显示被截断行数。

示例语法:

select listagg(col, ',') within group(order by id)
on overflow truncate '...' with count
from my_table;

适用版本

YashanDB 23.2.3.100


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70045450/viewspace-3084566/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2025-04-10

  • 博文量
    231
  • 访问量
    229272