1.listagg
该方法拼接后是varchar2类型,有最大长度限制,在Oracle Database中,VARCHAR2 字段类型,最大值为4000;PL/SQL中 VARCHAR2 变量类型,最大字节长度为32767。
适用场景:当要拼接的字符较少时使用。
select 'select ' ||col|| ' from ' || table_name ||';'
from
(
select owner||'.'||table_name as table_name,
listagg(to_char(column_name),'||''^C''||') within group(order by owner||'.'||table_name ) as col
from all_tab_columns
where owner='USE'
group by owner||'.'||table_name
);
2.xmlagg
该方法拼接完后是CLOB对象,最多能容纳4GB的数据,查看时可用to_char()显示。
适用场景:当要拼接的字符很多时使用。
select 'select ' ||to_char(col)|| ' from ' || table_name ||';'
from
(
select owner||'.'||table_name as table_name,
xmlagg(xmlparse(content column_name||',' wellformed) order by column_name).getclobval() as col
from all_tab_columns
where owner='USE'
group by owner||'.'||table_name
);
本文详细介绍了Oracle数据库中用于字符串拼接的两种方法:listagg和xmlagg。listagg适用于少量字符的拼接,结果为varchar2类型,而xmlagg则用于大量数据的拼接,结果为CLOB对象。文章通过具体示例展示了两种方法的使用场景。
8564

被折叠的 条评论
为什么被折叠?



