一个字段里面含有两个信息,怎么截取?求大神!!!

longx_ok 2012-03-30 10:34:49
在一个遗留的项目中,遇到一个棘手的问题,例如:表一 Book,里面有字段id,bookno,按常理来说里面存放的应该是一个bookno,但是现在有的数据里面存放了多个bookno,中间用空格隔开,bookno是按照一定格式来输入的!表二 tpi,里面有id,tpino,tpidesc。tpi表里面的tpino只有一个,且都是跟bookno里面的其中一个相对应的,通过什么方法让两张表关联起来得到对应的tpidesc???(备注:就是bookno字段里面有的数据是多个bookno,有的是一个,一个的都能顺利弄出来,多个bookno的就不好弄了)
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
在一个遗留的项目中,遇到一个棘手的问题,例如:表一 Book,里面有字段id,bookno,按常理来说里面存放的应该是一个bookno,但是现在有的数据里面存放了多个bookno,中间用空格隔开,bookno是按照一定格式来输入的!表二 tpi,里面有id,tpino,tpidesc。tpi表里面的tpino只有一个,且都是跟bookno里面的其中一个相对应的,通过什么方法让两张表关联起来得到对应的tpidesc???(备注:就是bookno字段里面有的数据是多个bookno,有的是一个,一个的都能顺利弄出来,多个bookno的就不好弄了)[/Quote]

select m.* , n.*
from book m , tpi n
where instr(','||m.bookno||',' , ','||n.tpino||',') > 0

select m.* , n.*
from book m , tpi n
where ','||m.bookno||',' like '%,'||n.tpino||',%')
ssqtjffcu 2012-03-31
  • 打赏
  • 举报
回复
楼主列出一些具体的数据看看啊,要不然谁知道你什么数据
我心飞翔 2012-03-31
  • 打赏
  • 举报
回复
请参考:

select * from book t1
inner join tpi t2
on t2.tpino like '%' || t1.bookno || '%'
or t1.bookno like '%' || t2.tpino || '%'



如果是db2需要修改上述语句,毕竟语法不一样。
longx_ok 2012-03-30
  • 打赏
  • 举报
回复
上面的语句在db2里面可以用吗
yixilan 2012-03-30
  • 打赏
  • 举报
回复
分隔bookno:
select id, regexp_substr(bookno, '[^ ]+', 1, level) from Book
connect by level < length(regexp_replace(bookno, '[^ ]+')) + 1
  • 打赏
  • 举报
回复
select *
from Book a,tpi b
where a.bookno like '%'||b.tpino||'%'

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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