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

 

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐