日期:2014-05-17  浏览次数:20793 次

筛选表中某一字段中的数据
本帖最后由 shii_u 于 2012-11-19 09:14:40 编辑
现有一字段数据如下:

checkPoint_Id     checkPoint_Result

 1                 循环风机:2、风机电机有异常声音。
 2                  3000线滚筒减速机:4、减速机有异常声音。

我想要选取字段中顿号“、”后面,句号“。”前面的内容(其他内容不要),该用什么方法实现,请教各位大侠


------解决方案--------------------

with t1 as
(
     select 1 id,'循环风机:2、风机电机有异常声音。' Result from dual
     union all
     select 2 id,' 3000线滚筒减速机:4、减速机有异常声音。' Result from dual
)

select substr(Result,instr(Result,'、')+1,length(Result)-instr(Result,'、')-1) c1
from t1


            c1
----------------------------------
1 风机电机有异常声音
2 减速机有异常声音


------解决方案--------------------
  SUBSTR(CHECKPOINT_RESULT,
              INSTR(CHECKPOINT_RESULT, '、')+1,
              INSTR(CHECKPOINT_RESULT, '。') -
              INSTR(CHECKPOINT_RESULT, '、')-1)
 简单的介绍下,INSTR(CHECKPOINT_RESULT, '、')表示得到字符串中第一个出现、的位置。然后用substr函数