两张表查询问题

WY刘文 2016-03-25 10:20:49
有表A如下:
dname description
name:11;name13 2
表B:
nametype namedescription
name:05 北京05店
name:11 湖北11店
name:13 湖北13店
查询显示为如下结果如何处理:
dname description
湖北11店;湖北13店 2
...全文
89 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssqtjffcu 2016-03-26
  • 打赏
  • 举报
回复
可以写个自定义的函数 函数里的功能就是把 name:11;name13 通过表B转换为 湖北11店;湖北13店,并返回 select 函数(dname), description from a
WYPGOOD 2016-03-26
  • 打赏
  • 举报
回复
表temp2是你的表B:自行修改的调试吧。 create or replace function FN_CHANGE(sourcestr in varchar2) return varchar2 is v_delimiter_index INTEGER; v_start_index INTEGER := 1; v_table VARCHAR2(50); cnvalue varchar2(50); v_delimiter_length INTEGER := LENGTH(';'); Result varchar2(300); begin LOOP -- 查找当前分隔符的位置 v_delimiter_index := INSTR(sourcestr,';', v_start_index); -- 如果在字符串找不到字串则返回0,退出循环 EXIT WHEN v_delimiter_index = 0; -- 得到分隔符前的值 v_table := SUBSTR(sourcestr, v_start_index, v_delimiter_index - v_start_index); IF v_table IS NOT NULL THEN -- 返回该集合的单个元素 select namedescription into cnvalue from temp2 where nametype=v_table; Result:=Result||cnvalue||';'; END IF; -- 检索位置设置为当前分隔符的下一个 v_start_index := v_delimiter_index + v_delimiter_length; END LOOP; -- 必须以一个空的 RETURN 语句结束 return(Result); end FN_CHANGE;
WY刘文 2016-03-26
  • 打赏
  • 举报
回复
函数如何写,效率更高?

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧