名称字段有这样的数据:name
贯通现代酒店(北京前门店)
桔子酒店(北京望京店)
北京帝景豪生大酒店
北京大北宾馆(大望路店)
现在我想把括号里的内容截取出来
用 
select poi_id,Name,substr(name,instr(name,'(',1)+1,instr(name,')-1',1)) from TB_POI_4个城市_1120北京前门店)
北京望京店)后面怎么总是多个括号select poi_id,Name,regexp_substr(name,'\(.*\)') from TB_POI_4个城市_1120(北京前门店)
(北京望京店)就把括号一起截取出来了,该怎么截啊~

解决方案 »

  1.   

       SELECT substr('北京大北宾馆(大望路店)',1,INSTR('北京大北宾馆(大望路店)','(')-1) FROM dual
      

  2.   

     SELECT regexp_replace('北京大北宾馆(大望路店)', '(.*)\(.*\)', '\1')
     FROM dual
      

  3.   


    15:23:48 tina@PRACTICE> with tb as (select '贯通现代酒店(北京前门店)' name from dual
    15:23:50   2  union all select '桔子酒店(北京望京店)' from dual)
    15:23:50   3  select name,substr(trim(name),instr(name,'(',1)+1,instr(name,')',-1)-instr(name,'(',1)-1) from tb;NAME                     SUBSTR(TRIM(NAME),INSTR(NAME,'(',1)+1,INSTR(NAME
    ------------------------ ------------------------------------------------
    贯通现代酒店(北京前门店) 北京前门店
    桔子酒店(北京望京店)     北京望京店已用时间:  00: 00: 00.01
      

  4.   

    楼主大意了吧,再看看substr的参数说明。
    substr(col,i,j)  其中,i是开始位置,j是长度(不是结束位置)
      

  5.   

     SELECT regexp_replace('北京大北宾馆(大望路店)', '(.*)(\()(.*)(\))', '\3')
     FROM dual
      

  6.   

    SELECT substr('贯通现代酒店(北京前门店)',instr('贯通现代酒店(北京前门店','('),(instr('贯通现代酒店(北京前门店)',')')-instr('贯通现代酒店(北京前门店','(')+1)) FROM dual;