把阿拉伯数字转化成大写

create function CapsChange(@Number float)
returns varchar(100)
begin
    declare @DNumber decimal(18,2)
    select @DNumber = convert(decimal(18,2),@Number)--把数字转换成只有两位小数点的数字
    declare @x varchar(100) --返回的大写金额
    declare @num int --循环计数器
    declare @DNumberLen int
    
    select @num = 0
    select @x = ''
    
    if left(@Dnumber,1) = '-'
        select @DNumberLen = len(@DNumber) - 1
    else 
        select @DNumberLen = len(@DNumber) 
    
    while @num < @DNumberLen
    begin
        if @num <> 2 
        begin
            declare @y varchar(100) --用于存放当前数字
            select @y = right(left(@DNumber,len(@DNumber) - @num ),1)
            select @x = case when @num = 7 then '万' when @num = 11 then '亿' else '' end + @x
            select @x = case when @num = 0 then '分' when @num = 1 then '角' when @num = 3 then '元' when @num in (4,8,12) then '拾' when @num in (5,9,13) then '佰' when @num in (6,10,14) then '仟' else '' end + @x
            select @x = case when @y = 0 then '零' when @y = 1 then '壹' when @y = 2 then '贰' when @y = 3 then '叁' when @y = 4 then '肆' when @y = 5 then '伍' when @y = 6 then '陆' when @y = 7 then '柒' when @y = 8 then '捌' when @y = 9 then '玖'  else '' end + @x
        end
        else 
        begin
            select @num = @num + 1 
            continue
        end
    select @num = @num + 1 
    end
    
    if left(@Dnumber,1) = '-'
        select @x = '负'+@x
    return @x
end
go
select dbo.CapsChange(2123456789.101)
--贰拾壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角零分
select dbo.CapsChange(-2123456789.101)
--负贰拾壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角零分


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值