求 貌似简单,却难以实现的一SQL语句
表A
有字段
code_name
1,2
2,3
1,2,3
-----
表B
有 1,2,3...等的解释表
code_id remarks
1 联电无效
2 联电无人接
3 .....
----------
想实现
把表A翻译出来
code_name, remark
1,2 联电无效,联电无人接
应该用函数可以实现,但就是不知怎写
------解决方案--------------------create table test3(code_id integer, remarks varchar2(100));
insert into test3
select 1, '联电无效 ' from dual
union all
select 2, '联电无人接 ' from dual
union all
select 3, '无 ' from dual;
--创建函数
create or replace function f_test1(var_str in string,delimiter in string) return string
is
var_tmp varchar2(2000);
var_element varchar2(2000);
rst varchar2(2000);
begin
var_tmp := var_str;
rst:= ' ';
while instr(var_tmp,delimiter)> 0 loop
var_element := substr(var_tmp,1,instr(var_str,delimiter)-1);
var_tmp := substr(var_tmp,instr(var_str,delimiter)+1,length(var_tmp));
select remarks into var_element from test3 where code_id=var_element;
rst:=rst||var_element|| ', ';
end loop;
select remarks into var_element from test3 where code_id=var_tmp;
rst:=rst||var_element;
return rst;
end;
--执行测试查询
select '1,2 ',f_test1( '1,2 ', ', ') remark from dual
--Result
1,2 联电无效,联电无人接