请问在plsql里面有没相应的将如:
ABC*DDD,替换成ABCDDD*这样的功能?替换或查找。
里面的*同正则表达式的任何字符。
谢谢!

解决方案 »

  1.   

    select replace('ABC*DDD','*','')||'*' x from dual;
      

  2.   

    有,不过是oracle 10g才有。
      

  3.   

    1.select replace('ABC*DDD','*','')||'*' x from dual;2.select (substr('ABC*DDD',1,instr('ABC*DDD','*')-1))||
      substr('ABC*DDD',instr('ABC*DDD','*')+1,length('ABC*DDD'))||'*' x from dual
      

  4.   

    谢谢 chanet & gw_delphi,我的问题主要在于有没类似正则表达式这样的东西。
      

  5.   

    faint,我已经告诉你有,不过是oracle 10g才有了。
      

  6.   

    谢谢AFIC,我之前已经看到了。具体怎么使用的?虽然我装的是9i
      

  7.   

    首先我想你也知道,这是10g的新功能,9i没有的,
    新增了4个函数
    REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和 REGEXP_REPLACE
    其中REGEXP_REPLACE就是你想要得
    REGEXP_REPLACE 返回初始参数被匹配子串替换之后的结果。例如:SELECT REGEXP_REPLACE('The temperature is 23°F','([[:digit:]])+°F',('\1'-32)*5/9||'°C')FROM DUAL;  这个查询将查找一个华氏温度并将其转换为摄氏度。它将返回:'The temperature is -5°C'。POSIX 正则表达式由标准的元字符(metacharacters)所构成:'^' 表示字符串的开始 
    '$' 表示字符串的结束 
    '.' 表示任何字符 
    字符的范围,比如说'[a-z]',表示任何ASCII 小写字母,与字符类"[[:lower:]]"" 等价 
    '?' 允许一个后继字符匹配零次或一次 
    '+' 允许一个后继字符匹配一次或多次 
    '*' 表示零次或多次 
    还有一些,不写了。