带小数的整数转化成英文表示

--带小数的整数转化成英文表示   

create or replace function spell_number( p_number in number )
return varchar2

as
type myArray is table of varchar2(255);
l_str myArray := myArray( '',
' THOUSAND ', ' MILLION ',
' BILLION ', ' TRILLION ',
' QUADRILLION ', ' QUINTILLION ',
' SEXTILLION ', ' SEQTILLION ',
' OCTILLION ', ' NONILLION ',
' DECILLION ', ' UNDECILLION ',
' DUODECILLION ' );
l_num varchar2(50) default trunc( p_number );
l_return varchar2(4000);
begin
for i in 1 .. l_str.count
loop
exit when l_num is null;

if ( substr(l_num, length(l_num)-2, 3) <> 0 )
then
l_return := to_char(
to_date(
substr(l_num, length(l_num)-2, 3),
'J' ),
'JSP' ) || l_str(i) || l_return;
end if;
l_num := substr( l_num, 1, length(l_num)-3 );
end loop;

-- beginning of section added to include decimal places:
if to_char( p_number ) like '%.%'
then
l_num := substr( to_char(p_number,
'9999999999999999999999999.99')
, instr( to_char(p_number,
'9999999999999999999999999.99'), '.' )+1 ,2);
if l_num > 0
then
if l_num <> '00'
then
l_return := l_return || ' AND CENT ';
l_return := l_return || to_char(to_date(l_num,'J' ),'JSP' );
end if;
end if;
end if;
-- end of section added to include decimal places

return l_return || ' ONLY ';
end spell_number;



运行结果:
select spell_number(19203344.76) from dual  


返回
NINETEEN MILLION TWO HUNDRED THREE THOUSAND THREE HUNDRED FORTY-FOUR AND CENT SEVENTY-SIX ONLY
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值