首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle字符串定位问题

2014-01-28 
oracle字符串定位,问题是这样的,我得到一个字符串,3c,有两个栏位里有如下信息3a,3b,3c,11,12,13,4a,4b,4c,

oracle字符串定位,问题是这样的,我得到一个字符串,3c,有两个栏位里有如下信息3a,3b,3c,11,12,13,4a,4b,4c,另一个栏位里是1,2,3,4,5,6,7,8,9
也就是说通过字符串3c找到栏位一里3c对应的,号在第几个位置上,然后在第二个栏位里取该位置,号前的字符串,我想了一下用instr取到的位置不准,不知道应该怎么弄,指点一下!

------解决方法--------------------------------------------------------
第二个栏位的数字可能并不是按1到n从小到达排序的?否则的话好像就没有用处了
------解决方法--------------------------------------------------------
 

探讨
是这样啊...
这有一个前提条件:数字只有1位,而字符串中的每个值必须都是2位
全部数据都是这样的吗


------解决方法--------------------------------------------------------
写了一个不管中间有多少个字符的,位数不固定的!

select case when c=0 then substr(a,b+1,length(a)-1) else substr(a,b+1,c-b-1) end  b,rownum from
(
  select a,b,
  nvl(lead(b) over(partition by a order by b),0) c,
  lag(b) over(partition by a order by b) d
  from
  (
  select distinct a, instr(a,',',rownum) b
  from
  (
  select  '3a,3b3,3c,11,12,11111113,4a111,114b,4c' a from dual
  )
  connect by rownum <length(a)
  )
)


--result:

3a 1
3b3 2
3c 3
11 4
12 5
11111113 6
4a111 7
114b 8
4c 9

        

热点排行