金额转换函数实现

set  ANSI_NULLS  ON
set  QUOTED_IDENTIFIER  ON
go

ALTER   FUNCTION   [ dbo ] . [ FN_CONTRACT_MONEY_UPPER ]  ( @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   replace ( replace ( replace ( replace ( replace ( replace ( @v_UpperStr , ' 零角 ' , '' ), ' 零分 ' , '' ), ' 零元 ' , '' ), ' 零拾 ' , '' ), ' 零佰 ' , '' ), ' 零仟 ' , '' ) + ' 圆整 '
END



 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值