在网上查了一下,说是wm_concat最大长度为30K,有没有好的解决方案呢?

解决方案 »

  1.   

    1、WM_CONCAT本身限制,并且如果字符串太长太多,拼接会很慢,没有效率。
    2、如果要拼接更长的,可以自定义一个聚合函数试试。
      

  2.   


    我也自定义了一个拼接函数,使用clob作为存储对象。可是后面又引发一系列的问题。因为我后面还要对个拼接后的字符串做一些操作。如max,substr等等。而clob根本不支持这些操作。也想到把clob转为varchar2类型,可是varchar2最大长度是4000。真是烦啊。
      

  3.   

    最好不要直接用wm_concat
    这个函数有的时候不能用
    可以自定义
    具体可以参照:http://blog.csdn.net/cnham/archive/2011/02/25/6206759.aspx
      

  4.   

    超过4000 那要以clob方式展现。也比较麻烦了。
      

  5.   

    我也遇到同样问题,想了个办法,横向差分超长的字符串,需要拆多长根据字符串最大长度决定。
    先估算wm_concat(item)中多少个item会超长,以100为例,套一层子查询,里边用分析函数row_number,在外边用
    wm_concat(case when ro <= 100 then item end) item1,
    wm_concat(case when ro > 100 and ro<200 then item end) item2,

    应该可以满足一些需求了。