写点什么

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

作者:数据库砖家
  • 2025-05-16
    广东
  • 本文字数:428 字

    阅读完需:约 1 分钟

问题类型:功能使用

关键词: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 countfrom my_table;
复制代码

适用版本

YashanDB 23.2.3.100

用户头像

还未添加个人签名 2025-04-09 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB 使用 listagg 报 YAS-02511 的原因及解决方案_数据库_数据库砖家_InfoQ写作社区