问题类型:功能使用
关键词: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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。