数据库中有个字段里面包含<input type='text' name='answer_4727' class='input2' size='10' style='text-align:center'/> 数据类似这样:<input type='text' name='answer_4727' class='input2' size='10' style='text-align:center'/>是会计的基本方法。其中answer_4727 这串不一样 例如 另一条是这样:可比性原则必须建立在<input type='text' name='answer_4729' class='input2' size='10' style='text-align:center'/>原则的基础上,以保证会计信息的真实、可靠。现在想把 包括尖括号 中间所有的 替换成 三个百分号 不知道怎么搞 求高手帮忙  先致谢 致谢 致谢 致谢

解决方案 »

  1.   

    这个意思?with t as(
    select '<input type=''text'' name=''answer_4727'' class=''input2'' size=''10'' style=''text-align:center''/>是会计的基本方法' contents from dual
    union all
    select '可比性原则必须建立在<input type=''text'' name=''answer_4729'' class=''input2'' size=''10'' style=''text-align:center''/>原则的基础上,以保证会计信息的真实、可靠。' from dual
    )
    select regexp_replace(contents,'<[^<>]+>','%%%') contents from t;
    /*
    %%%是会计的基本方法
    可比性原则必须建立在%%%原则的基础上,以保证会计信息的真实、可靠。
    */
      

  2.   

    首先致谢  确实可以这样解决 可是我的数据库是oralce9 正则表达式oralce10 里好像好像才可以的说 
    目前用别的法子解决问题了 但是这个还是希望知道在oralce9里 有什么法子么?
      

  3.   


    with t as(
    select '<input type=''text'' name=''answer_4727'' class=''input2'' size=''10'' style=''text-align:center''/>是会计的基本方法' s from dual
    union all
    select '可比性原则必须建立在<input type=''text'' name=''answer_4729'' class=''input2'' size=''10'' style=''text-align:center''/>原则的基础上,以保证会计信息的真实、可靠。' from dual
    )
    select substr(s,1,instr(s,'<')-1)||'%%%'||substr(s,instr(s,'/>')+2) from t;-- 如果字符串中有多个 <.../>,可以用函数
    create or replace function stuff (str varchar2)
    return varchar2
    is
     s varchar2(32678);
     sp number;
     ep number;
    begin
     s:=str;
     loop
       sp:=instr(s,'<'); ep:=instr(s,'/>');
       exit when sp=0 or ep=0;
       s:=substr(s,1,sp-1)||'%%%'||substr(s,ep+2);
     end loop;
     return s;
    end;
    /