select translate('123','123','一二三') from dual;--不写全了,其它数字自己加吧

解决方案 »

  1.   

    自己写一个函数来处理,下面给个例子,声明:此例来源于网上,此处只是转帖.供网友研究学习参考用.CREATE OR REPLACE FUNCTION CONVERT_MONEY
    (v_number number) RETURN varchar2 is/*********************************************************************************/
    /*          此函数处理数字小写金额转换为大写金额              */
    /*            函数名:CONVERT_MONEY                                           */
    /*              参 数:v_number  类型:number                 */
    /*               数字金额不能超过万亿,否则返回溢出               */
    /*               注意:存放大写单位的字符串中的空格为两个字符          */
    /*                                                                               */
    /*********************************************************************************/var_unit     varchar2(30):='分角 元拾佰仟万拾佰仟亿拾佰仟';      --大写单位
    var_chn      varchar2(20):='壹贰叁肆伍陆柒捌玖零';                --数字大写
    var_bool     char(1)     :='F';                                   --零位置标记
    var_i        number(2)   :=0;                                     --计数器(存放每个字符位置)
    var_out      varchar2(100);                                       --返回参数(返回转换过后的大写金额)
    var_number   varchar2(30);                                        --数字字符串
    var_length   number(2);                                           --字符串长度 
    var_temp     char(1);                                             --单个字符BEGIN
      IF ABS(v_number)>999999999999.99 THEN                            --万亿不预考虑
        var_out := '溢出!';
        RETURN var_out;
      END IF;
      IF ABS(v_number)=0 THEN                                          --0处理
        var_out:='零元整';
        RETURN var_out;
      END IF;
      var_number:=RTRIM(LTRIM(TO_CHAR(v_number,'999999999990.99')));   --格式转换
      var_length:=LENGTH(var_number);                                  --获取长度
      IF substr(var_number,var_length,1)='0' THEN
           var_out:='整';                                              --整元整角处理  
      END IF;
      var_temp:=SUBSTR(var_number,var_length,1);
                                                  
    WHILE (var_temp is not null) or( var_temp='') LOOP                 --循环开始(从右到左逐为转换) 
        var_i:=var_i+1;
    var_length:=LENGTH(var_number);
    var_temp:= SUBSTR(var_number,var_length,1 );
    var_number:=SUBSTR(var_number,1,var_length-1);
    IF var_temp is null or var_temp='' THEN                    --右取值为空,退出循环
       Exit;
    END IF;
    IF var_temp = '.' THEN
       GOTO next_loop ;                                        --为小数点时,跳过
    END IF;
    IF var_temp = '-' THEN
       var_out:= '负'||var_out;                                --为’-‘时,退出循环
       EXIT ;
    END IF;
    IF var_temp <> '0' THEN                                    --数字不为零时
        var_out:=SUBSTR(var_chn,2*TO_NUMBER(var_temp)-1,2)||SUBSTR(var_unit,2*var_i-1,2)||var_out;  
        var_bool:='T';
    Else                                                       --数字为零时
        IF var_bool='T' THEN
    IF (var_i <> 4 and var_i <> 2) or TO_NUMBER(var_number) <> 0 THEN
    var_out:='零'||var_out;
    END IF;
    var_bool:='F';
        END IF;
    IF var_i= 12 or var_i = 8 THEN
    IF SUBSTR(var_number,LENGTH(var_number)-2, 3) <> '000' THEN 
    var_out:= SUBSTR(var_unit,2*var_i-1,2)||var_out; 
    END IF ;
    END IF;
    IF var_i = 4 THEN
    IF TO_NUMBER(var_number) <> 0 THEN 
    var_out:=SUBSTR(var_unit,2*var_i-1,2)||var_out; 
    end if;
    END IF;
    END IF;
    <<next_loop >>
    BEGIN
        null;
    END;
    END LOOP;
       var_out:='¥'||var_out; 
      RETURN var_out;
     EXCEPTION 
          WHEN OTHERS THEN 
             var_out :=sqlerrm; 
    END CONVERT_MONEY;
    /