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

Posted rawls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Sql Server 数字金额转中文金额 函数的主要内容,如果未能解决你的问题,请参考以下文章

求助oracle小写金额转换大写金额的函数

小写数字自动转换成大写人民币金额两张表怎么在桌面找不同吗?

sql怎么把字符串转换为数字?

在sql中如何将字符串数字转换成数字?

数字转换成英文 金额转成英文大写

如何用sql的日期函数,分别查出1月~12月每个月的销售金额?