我DB中有一字符串字段,其数据格式如下:
”时间”※”业务类别”※”服务类别”※”手机号”※”帐号”※”变动的金额”;
它是有很多值组合起来的,用"※"把值分割.
一个我想写一个SQL语句,只把业务类别取出来请问怎么做?
取由于业务类别的长度不定,所以取子串不能实现!

解决方案 »

  1.   

    select substr(str,instr(str,'※',1)+1,instr(str,'※',2)-instr(str,'※',1)-1) from tab
      

  2.   

    假设"业务类别"始终位于第一和第二个分界符之间
    select substr( column_name, 
    --第一个'※'的位置
    nvl(instr(column_name,'※'),0) + 1, 
    --第一和第二个'※'之间的字符数
    nvl(
    instr(
    nvl(instr(column_name,'※'),0) + 1,length(column_name)),
    '※'
    ),1
    ) - 1
    )
    from table_name
      

  3.   

    SELECT substr('字符串',INSTR('字符串','※', 1, 1)+1,
      INSTR('字符串','※', 1, 2)-INSTR('字符串','※', 1, 1)-1)
      FROM 表名;
    -- '字符串'就是指”时间”※”业务类别”※”服务类别”※”手机号”※”帐号”※”变动
    -- 的金额”;
      

  4.   

    SELECT SUBSTR('abc*def*gaaaa*',instr('abc*def*gaaaa*','*',1)+1,instr('abc*def*gaaaa*','*',instr('abc*def*gaaaa*','*',1)+1)-instr('abc*def*gaaaa*','*',1)-1) FROM DUAL;