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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM