原字符串:(A+B)/C-D 
我将:A、B、C、D 替换成1、2、3、4
Oracle 为9i

解决方案 »

  1.   

    select translate('(A+B)/C-D','ABCD','1234') from dual
      

  2.   

    这是单个字符替换,而不是字符串替换。因为:A可能等于A_BC
      

  3.   

    要使用replace  不能使用translate 
      

  4.   

    嗯,如果是字符串的话,用replace
      

  5.   

    难道:
    select replace(replace(replace(replace('(A+B)/C-D','A','1'),'B','2' ),'C','3'),'D','4') from dual;
    这样也太多replace了吧!
    有没有简单点的方法呢?
      

  6.   

    做一个Function,然后SQL上调用。
    这种方法可以么?CREATE OR REPLACE FUNCTION TEST01.REPLACE_STR(IN_STR IN VARCHAR2) 
    RETURN  VARCHAR2
    IS
    W_STR VARCHAR2(32767);
    BEGIN
    W_STR:=REPLACE(IN_STR,'A','1');
    W_STR:=REPLACE(W_STR,'B','2');
    W_STR:=REPLACE(W_STR,'C','3');
    W_STR:=REPLACE(W_STR,'D','4');
      RETURN W_STR;
    END ;
    /