日期:2014-05-16  浏览次数:20789 次

一个字段里面含有两个信息,怎么截取?求大神!!!
在一个遗留的项目中,遇到一个棘手的问题,例如:表一 Book,里面有字段id,bookno,按常理来说里面存放的应该是一个bookno,但是现在有的数据里面存放了多个bookno,中间用空格隔开,bookno是按照一定格式来输入的!表二 tpi,里面有id,tpino,tpidesc。tpi表里面的tpino只有一个,且都是跟bookno里面的其中一个相对应的,通过什么方法让两张表关联起来得到对应的tpidesc???(备注:就是bookno字段里面有的数据是多个bookno,有的是一个,一个的都能顺利弄出来,多个bookno的就不好弄了)

------解决方案--------------------
分隔bookno:
SQL code
select id, regexp_substr(bookno, '[^ ]+', 1, level) from Book
connect by level < length(regexp_replace(bookno, '[^ ]+')) + 1

------解决方案--------------------
请参考:
SQL code

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

------解决方案--------------------
探讨
在一个遗留的项目中,遇到一个棘手的问题,例如:表一 Book,里面有字段id,bookno,按常理来说里面存放的应该是一个bookno,但是现在有的数据里面存放了多个bookno,中间用空格隔开,bookno是按照一定格式来输入的!表二 tpi,里面有id,tpino,tpidesc。tpi表里面的tpino只有一个,且都是跟bookno里面的其中一个相对应的,通过什么方法让两张表关联起来得到对应的tpidesc???(备注:就是bookno字段里面有的数据是多个bookno,有的是一个,一个的都能顺利弄出来,多个bookno的就不好弄了)