select translate('123','123','一二三') from dual;--不写全了,其它数字自己加吧
解决方案 »
- 怎么查看本机某个数据库的连接字符串(很菜鸟)
- linux 下 oracle 11g 启动监听的问题,急!在线等
- pro*c连接orecle出错
- 急!!同一台机器9i可用,10g坏了,现在要重装10g,怎么办?不能损坏9i
- 首先祝大家中秋节快乐,有个关于oracle rewrite的问题希望大家帮忙看下
- 帮忙看一下,这个SQL怎么实现!。。 谢谢~~
- sqlserver转oracle的问题:sqlserver的自增列的处理
- Oracle 服务器版是否可以安装在win2000 server版上。有什么版本的服务器只只能安装在win 2000 advance server 而不能安装在 win2000 serv
- 请教高手关于PL/SQL得问题,100分相送!!
- 单表sql问题
- 说到 麦当劳
- oracle纪录合并,给出一个SQL语句吗
(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;
/