SELECT REGEXP_SUBSTR('-20号', '[0-9]+(室|-|)')
FROM DUAL WHERE REGEXP_LIKE('-20号', '(室|-|)')   我想判断'-20号' 这个值为室为-的时候显示20 ,其他的就为空!。不知道为什么就是会有差

解决方案 »

  1.   

    如果是这样的话可以考虑用decode啊,简单快捷。
      

  2.   


    因为这个只是字符串里面的一部分,。我要拆分字符串。所以用decode不行!
      

  3.   


    --這個意思,不是-20號出來的是空?
    SELECT regexp_replace(REGEXP_SUBSTR('-20号', '[-0-9]+室?$'),'[-室]',''),
    regexp_replace(REGEXP_SUBSTR('-20室', '[-0-9]+室?$'),'[-室]',''),
    regexp_replace(REGEXP_SUBSTR('-20', '[-0-9]+室?$'),'[-室]','') FROM DUAL;/*
    R RE RE                                                                         
    - -- --                                                                         
      20 20                                                                         
    */