表
grade | name
----------------
A XX
A XY
A YY
B aa
B bb
如何得出下表
grade | name
----------------
A XX;XY;YY
B aa;bb
SQL code
with
t
as
(
select
'
A
'
grade,
'
XX
'
name
from
dual
union
all
select
'
A
'
,
'
XY
'
from
dual
union
all
select
'
A
'
,
'
YY
'
from
dual
union
all
select
'
B
'
,
'
aa
'
from
dual
union
all
select
'
B
'
,
'
bb
'
from
dual
)
select
grade,
replace
(wm_concat(name),
'
,
'
,
'
;
'
) name
from
t
group
by
grade;
GRADE NAME
--
--- --------------------------------------------------------------------------------
A XX;XY;YY
B aa;bb
表 t1 中有这样的一列数据,出现了问题,本来应该是编码拼接的字符串,有些数据成了汉字
SQL code
con
test1,test2,test3
test1,测试2
test1,测试3,测试4
测试1,测试2,测试4
表 t2 是一个参数表
SQL code
id name
test1 测试1
test2 测试2
test3 测试3
test4 测试4
如果要把表t1中的列con更新成正常的数据,要怎么做呢?正常的数据要是这样的:
SQL code
con
test1,test2,test3
test1,test2
test1,test3,test4
test1,test2,test4
SQL code :
declarec_update sys_refcursor;beginfor c_update in (select * from t2)loopupdate t1set con=replace(con,c_update.id,c_update.name);end loop;end;