WM_CONCAT是一个列转换行的函数,把一列数据合并成一样,用逗号隔开。
用法很简单:select wm_concat(column) from tablename;
比如t表列A数据为:
select A FROM T;
--------------------
AA
BB
运用函数的结果:
select wm_concat(A) FROM T;
--------------------------------
AA,BB
经常做维护,我需要编写某个命令,里面用到这样一段字符串(只截取了部分,实际上更长):
THYTEXP:WMTHGCXT,XXJSGS:UNDOTBS1,XXJSGS:SYSAUX,XXJSGS:SYSTEM,XXJSGS:UNDO_2,XXJSGS:GZGL,XXJSGS:XXCYCWLPT,XXJSGS:SCZB,THKQSZPT:SYSTEM,THKQSZPT:SYSAUX,THKQSZPT:UNDOTBS1,THKQSZPT:UNDO_2,THKQSZPT:THKQSZPT,THYTXLBPT:SYSTEM,THYTXLBPT:SYSAUX,THYTXLBPT:UNDOTBS1,THYTXLBPT:UNDO_2,THYTXLBPT:THYTXLBPT,HOSPITAL:SYSTEM,HOSPITAL:SYSAUX,HOSPITAL:UNDOTBS1,HOSPITAL:UNDO_2,HOSPITAL:NK01,HOSPITAL:NK01,HOSPITAL:QXHQ,HOSPITAL:YLEMR,HOSPITAL:YLMEDREC,HOSPITAL:ST_RIS,HOSPITAL:ST_PACS,YCTYSQ:SYSTEM,YCTYSQ:SYSAUX,YCTYSQ:UNDOTBS1,YCTYSQ:TYSQ_DATA,YCTYSQ:TYSQ_BLOB,YCTYSQ:TYSQ_DATA_INDEX,YCTYSQ:UNDO_2,VIRUSREPORT:VIRUSREPORT,VIRUSREPORT:UNDOTBS1,VIRUSREPORT:SYSAUX,VIRUSREPORT:UNDO_2,VIRUSREPORT:SYSTEM,QYYP:QYYP,QYYP:UNDOTBS1,QYYP:SYSAUX,QYYP:UNDO_2,QYYP:SYSTEM;
靠我手工去拼接,那是很不方便。
函数生成以上数据方法:
创建表T,获得我要拼接的数据,插入到I;
create table t(i varchar2(20) );
insert into t select XXXXXXXXXX;
之后形成需要的基本列:
执行函数查询,结果复制出来就是我想要的数据:
select wm_concat(i) from t;
----完成-------
感谢关注
