天天看点

Oracle字符串和多列行转换

多行转字符串

这个比较简单,用||或concat函数可以实现

select concat(id,username) str from app_user
select id||username str from app_user
           

字符串转多列

实际上就是拆分字符串的问题,可以使用 substr、instr、regexp_substr函数方式

字符串转多行

使用union all函数等方式

wm_concat函数

首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以”,”号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用准备测试数据

create table test(id number,name varchar2());
insert into test values(,'a');
insert into test values(,'b');
insert into test values(,'c');
insert into test values(,'d');
insert into test values(,'e');
           

效果1 : 行转列 ,默认逗号隔开

Oracle字符串和多列行转换

效果2: 把结果里的逗号替换成”|”

Oracle字符串和多列行转换

效果3: 按ID分组合并name

select id,wm_concat(name) name from test group by id;
           
Oracle字符串和多列行转换

继续阅读