Sql Server 小写金额转换成大写

/********************************************************
作者:(birdie_7761@cmmail.com)
版本:1.0
创建时间:20020227
修改时间:
功能:小写金额转换成大写
参数:n_LowerMoney 小写金额
v_TransType 种类 -- 1: directly translate, 0: read it in words 
输出:大写金额
*******************************************************
*/

CREATE   FUNCTION  dbo.L2U ( @n_LowerMoney  numeric( 15 , 2 ), @v_TransType   int
RETURNS   VARCHAR ( 200 AS  
BEGIN  
Declare   @v_LowerStr   VARCHAR ( 200 --  小写金额 
Declare   @v_UpperPart   VARCHAR ( 200
Declare   @v_UpperStr   VARCHAR ( 200 --  大写金额
Declare   @i_I   int

set   @v_LowerStr   =   LTRIM ( RTRIM ( ROUND ( @n_LowerMoney , 2 )))  -- 四舍五入为指定的精度并删除数据左右空格
set   @i_I   =   1
set   @v_UpperStr   =   ''

while  (  @i_I   <=   len ( @v_LowerStr ))
begin
select   @v_UpperPart   =   case   substring ( @v_LowerStr , len ( @v_LowerStr -   @i_I   +   1 , 1 )
WHEN   ' . '   THEN   ' '
WHEN   ' 0 '   THEN   ' '
WHEN   ' 1 '   THEN   ' '
WHEN   ' 2 '   THEN   ' '
WHEN   ' 3 '   THEN   ' '
WHEN   ' 4 '   THEN   ' '
WHEN   ' 5 '   THEN   ' '
WHEN   ' 6 '   THEN   ' '
WHEN   ' 7 '   THEN   ' '
WHEN   ' 8 '   THEN   ' '
WHEN   ' 9 '   THEN   ' '
END
+  
case   @i_I
WHEN   1   THEN   ' '
WHEN   2   THEN   ' '
WHEN   3   THEN   ''
WHEN   4   THEN   ''
WHEN   5   THEN   ' '
WHEN   6   THEN   ' '
WHEN   7   THEN   ' '
WHEN   8   THEN   ' '
WHEN   9   THEN   ' '
WHEN   10   THEN   ' '
WHEN   11   THEN   ' '
WHEN   12   THEN   ' 亿 '
WHEN   13   THEN   ' '
WHEN   14   THEN   ' '
WHEN   15   THEN   ' '
WHEN   16   THEN   ' '
ELSE   ''
END
set   @v_UpperStr   =   @v_UpperPart   +   @v_UpperStr
set   @i_I   =   @i_I   +   1
end

if  (  0   =   @v_TransType )
begin
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零拾 ' , ' '
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零佰 ' , ' '
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零仟 ' , ' '
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零零零 ' , ' ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零零 ' , ' ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零角零分 ' , ' ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零分 ' , ' ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零角 ' , ' ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零亿零万零元 ' , ' 亿元 ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 亿零万零元 ' , ' 亿元 ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零亿零万 ' , ' 亿 ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零万零元 ' , ' 万元 ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 万零元 ' , ' 万元 ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零亿 ' , ' 亿 ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零万 ' , ' ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零元 ' , ' ' )
set   @v_UpperStr   =   REPLACE ( @v_UpperStr , ' 零零 ' , ' ' )
end

--  对壹元以下的金额的处理 
if  (  ' '   =   substring ( @v_UpperStr , 1 , 1 ))
begin
set   @v_UpperStr   =   substring ( @v_UpperStr , 2 ,( len ( @v_UpperStr -   1 ))
end

if  (  ' '   =   substring ( @v_UpperStr , 1 , 1 ))
begin
set   @v_UpperStr   =   substring ( @v_UpperStr , 2 ,( len ( @v_UpperStr -   1 ))
end

if  (  ' '   =   substring ( @v_UpperStr , 1 , 1 ))
begin
set   @v_UpperStr   =   substring ( @v_UpperStr , 2 ,( len ( @v_UpperStr -   1 ))
end

if  (  ' '   =   substring ( @v_UpperStr , 1 , 1 ))
begin
set   @v_UpperStr   =   substring ( @v_UpperStr , 2 ,( len ( @v_UpperStr -   1 ))
end

if  ( ' '   =   substring ( @v_UpperStr , 1 , 1 ))
begin
set   @v_UpperStr   =   ' 零元整 '
end
return   @v_UpperStr
END

-- --------------------------------------------------------------

-- 例:
--
select iptv.dbo.L2U(56588441.111,1)
select  iptv.dbo.L2U( 56588441.111 , 0 )

-- select iptv.dbo.L2U(00.00,0)


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值