Sql Server 数字金额转中文金额 函数

  在做一些订单金额、合同金额转换的时候,经常会遇到数字转成中文的情况,所以整理了一个数字转中文的函数;

/*
    说明:数字金额转中文金额
    示例:187.4 转成 壹佰捌拾柒圆肆角整
*/

CREATE FUNCTION [dbo].[CNumeric](@num numeric(14,2))
    returns nvarchar(100)
BEGIN
    Declare @n_data nvarchar(20),@c_data nvarchar(100),@n_str nvarchar(10),@i int
    Set @n_data=right(space(14)+cast(cast(abs(@num*100) as bigint) as nvarchar(20)),14)
    Set @c_data=''
    Set @i=1
    
    WHILE @i<=14
    Begin
        set @n_str=substring(@n_data,@i,1)
        if @n_str<>''
        begin
        IF not ((SUBSTRING(@n_data,@i,2)= '00') or
        ((@n_str= '0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14))))
        SET @c_data=@c_data+SUBSTRING( N'零壹贰叁肆伍陆柒捌玖',CAST(@n_str AS int)+1,1)
        IF not ((@n_str= '0') and (@i <> 4) and (@i <> 8) and (@i <> 12))
        SET @c_data=@c_data+SUBSTRING( N'仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1)
        IF SUBSTRING(@c_data,LEN(@c_data)-1,2)= N'亿万'
        SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1)
        END
        SET @i=@i+1
    END
    IF @num <0
        SET @c_data= '(负数)'+@c_data
    IF @num=0
        SET @c_data= '零圆'
    IF @n_str= '0'
        SET @c_data=@c_data+ ''
        
    RETURN(@c_data)
END

 

转载于:https://www.cnblogs.com/Rawls/p/11376159.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值