取一个大文本的部分字符串

<QFBZZF>400.0</QFBZZF><RYXSSPQK>0</RYXSSPQK><BCDBJZJJZF>0.0</BCDBJZJJZF><BCGRZFD>0.0</BCGRZFD><YLLB>21</YLLB><SFDBZJS></SFDBZJS><SFCYFQSS></SFCYFQSS>


这个是字段a的文本值

我如果只想要取到<BCDBJZJJZF>和</BCDBJZJJZF>之间的0.0  那么怎么写select 部分

wangzhongqiang 发布于 2019-2-27 12:34
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
守约Lv4初级互助
发布于2019-2-27 13:06
---oracle数据库

select SUBSTR(substr('<QFBZZF>400.0</QFBZZF><RYXSSPQK>0</RYXSSPQK><BCDBJZJJZF>0.0</BCDBJZJJZF><BCGRZFD>0.0</BCGRZFD><YLLB>21</YLLB><SFDBZJS></SFDBZJS><SFCYFQSS></SFCYFQSS>',
                     instr('<QFBZZF>400.0</QFBZZF><RYXSSPQK>0</RYXSSPQK><BCDBJZJJZF>0.0</BCDBJZJJZF><BCGRZFD>0.0</BCGRZFD><YLLB>21</YLLB><SFDBZJS></SFDBZJS><SFCYFQSS></SFCYFQSS>',
                           '<BCGRZFD>') + 9),
              1,
              instr(substr('<QFBZZF>400.0</QFBZZF><RYXSSPQK>0</RYXSSPQK><BCDBJZJJZF>0.0</BCDBJZJJZF><BCGRZFD>0.0</BCGRZFD><YLLB>21</YLLB><SFDBZJS></SFDBZJS><SFCYFQSS></SFCYFQSS>',
                           instr('<QFBZZF>400.0</QFBZZF><RYXSSPQK>0</RYXSSPQK><BCDBJZJJZF>0.0</BCDBJZJJZF><BCGRZFD>0.0</BCGRZFD><YLLB>21</YLLB><SFDBZJS></SFDBZJS><SFCYFQSS></SFCYFQSS>',
                                 '<BCGRZFD>') + 9),
                    '</BCGRZFD>',
                    1,
                    1) - 1)
  from dual;
  
  
  ---伪代码版
  
  select SUBSTR(substr(原字符串,
                     instr(原字符串,
                           '<BCGRZFD>') + 9),
              1,
              instr(substr(原字符串,
                           instr(原字符串,
                                 '<BCGRZFD>') + 9),
                    '</BCGRZFD>',
                    1,
                    1) - 1)
  from dual;


  • wangzhongqiang wangzhongqiang(提问者) 如果我是之间的字符长度不确定的话 直接用上面的语句会有问题吗
    2019-02-27 13:43 
  • wangzhongqiang wangzhongqiang(提问者) 谢谢 知道了
    2019-02-27 13:46 
  • 守约 守约 回复 wangzhongqiang(提问者) 完全没问题的,我这个是定位你的标签位置
    2019-02-27 13:59 
  • 2关注人数
  • 738浏览人数
  • 最后回答于:2019-2-27 13:06
    请选择关闭问题的原因
    确定 取消
    返回顶部