表
grade | name
----------------
A XX
A XY
A YY
B aa
B bb
如何得出下表
grade | name
----------------
A XX;XY;YY
B aa;bb
SQL code
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 :declare
c_update sys_refcursor;
begin
for c_update in (select * from t2)
loop
update t1
set con=replace(con,c_update.id,c_update.name);
end loop;
end;