先了解一下LOB类型:
Oarcle中的LOB类型:
在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了。因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象、档案等)。
LOB类型分为BLOB和CLOB两种:
开始新建一个表,并且插入测试数据:
create table lp_0409_0(
xuehao varchar2(20),
username varchar2(50),
kecheng varchar2(50)
);
insert into lp_0409_0 values(‘001‘,‘老刘‘,‘语文‘);
insert into lp_0409_0 values(‘001‘,‘老刘‘,‘数学‘);
insert into lp_0409_0 values(‘001‘,‘老刘‘,‘生物‘);
insert into lp_0409_0 values(‘002‘,‘老赵‘,‘语文‘);
insert into lp_0409_0 values(‘002‘,‘老赵‘,‘英语‘);
insert into lp_0409_0 values(‘002‘,‘老赵‘,‘化学‘);
查询一下:
select * from lp_0409_0;
查询结果:
XUEHAO USERNAME KECHENG
001 老刘 语文
001 老刘 数学
001 老刘 生物
002 老赵 语文
002 老赵 英语
002 老赵 化学
对kecheng字段行转列:
select a.xuehao, a.username, wm_concat(a.kecheng)
from lp_0409_0 a
group by (a.xuehao, a.username);
查询结果:
XUEHAO USERNAME WM_CONCAT(A.KECHENG)
001 老刘 <CLOB>
002 老赵 <CLOB>
发现查询出来的kecheng字段显示的是
这里再补充2个函数:
这2个函数均可以显示CLOB数据类型。
用to_char()函数显示CLOB数据类型:
select a.xuehao, a.username, to_char(wm_concat(a.kecheng))
from lp_0409_0 a
group by (a.xuehao, a.username);
显示结果:
XUEHAO USERNAME TO_CHAR(WM_CONCAT(A.KECHENG))
001 老刘 语文,数学,生物
002 老赵 语文,英语,化学
用dbms_lob.substr()函数显示CLOB数据类型:
select a.xuehao, a.username, dbms_lob.substr(wm_concat(a.kecheng))
from lp_0409_0 a
group by (a.xuehao, a.username);
XUEHAO USERNAME DBMS_LOB.SUBSTR(WM_CONCAT(A.KE
001 老刘 语文,数学,生物
002 老赵 语文,英语,化学
原文:https://www.cnblogs.com/lpeng94/p/12667288.html