之前数据量少的时候,用:select wm_concat(字段) from 表 拼接数据量小的话,没有问题,数据量超出4000个就会爆以下错误信息:

  1. 1 语法格式:SELECT xmlagg(xmlparse(content 合并字段||’,’ wellformed) order by 排序字段).getclobval() FROM 表名

  1. 1 select xmlagg(xmlparse(content SECTION_NO||',' wellformed) order by SPS_ID).getclobval() SECTION_NO from REAL_PROJ_SECTION

SQL语句

 

拼接出来的语句,最后会多一个“,”,可以使用substr截取字符串和length计算字符长度配合使用

  1. 1 格式1 substr(string string, int a, int b);
  2. 2
  3. 3   格式2substr(string string, int a) ;
  4. 4
  5. 5 解释:
  6. 6
  7. 7 格式1
  8. 8 1string 需要截取的字符串
  9. 9 2a 截取字符串的开始位置(注:当a等于01时,都是从第一位开始截取)
  10. 10 3b 要截取的字符串的长度
  11. 11
  12. 12 格式2
  13. 13 1string 需要截取的字符串
  14. 14 2a 可以理解为从第a个字符开始截取后面所有的字符串。

最终sql语句:

  1. 1 select substr(xmlagg(xmlparse(content SECTION_NO || ',' wellformed) order by SPS_ID)
  2. 2 .getclobval(),
  3. 3 0,
  4. 4 length(xmlagg(xmlparse(content SECTION_NO || ',' wellformed) order by SPS_ID)
  5. 5 .getclobval()) - 1) SECTION_NO
  6. 6 from REAL_PROJ_SECTION

问题解决!~~~

 

版权声明:本文为chenyanbin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chenyanbin/p/11156228.html