针对oracle拼接函数的乱码,首先查询一下oracle字符的编码是否支持中文,查询语句: SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = ‘NLS_CHARACTERSET’; 如果是中文的,则选择另一种方式: wmsys.wm_concat(to_char(….))..应该加上to_char() 在拼接的字段加上转换。
想当年,在我们需要将某字段多行内容拼接起来的时候,wm_concat提供了很好的方法 这使得这个未公开的函数,得到了广泛的宣传与运用
但是,不公开,英文是undocumented,就意味着随时可能发生变更 这不,10.2.0.5上,其返回类型从varchar2变为了clob 而在12c当中,干脆就取消了此函数
优先: listagg(11g) > stragg(tomkyte) > 自定义PLSQL函数 > wm_concat。
实例: select listagg(TO_CHAR(A.zlmc),',') WITHIN GROUP(ORDER BY A.zlmc) rank from (select m.rowid,m.,z. from ZYWSPT_GFXWJB m left join ZYWSPT_ZDYLWJBCB n on m.id = n.glbjlid left join ZYWSPT_ZLBCB Z ON n.zlbcjlid = z.id and m.glbm = z.Glb where 1 = 1 and m.id=1 order by m.dlsj desc,m.id desc) A;
感谢网上的仁兄提供资料。
http://www.voidcn.com/article/p-ylyucrfn-hw.html
http://www.itpub.net/forum.php?mod=viewthread&tid=1825066