SQL標量值函數:小寫金額轉大寫

咱們平常開發業務系統中,做爲統計報表中,特別是財務報表,顯示中文金額常常遇到。數據庫

轉換大小寫的方法有不少,如下是從數據庫函數方面解決這一問題.函數

效果如圖:blog

調用:SELECT dbo.[Fn_ConvertRMB](192.4)ip

image

具體函數以下:開發

-- =============================================
-- 調用:SELECT dbo.[Fn_ConvertRMB](192.4)
-- Create date: 2015-01-06
-- Description:    返回中文金額
-- =============================================
CREATE FUNCTION [dbo].[Fn_ConvertRMB] (@num NUMERIC(14, 2))
RETURNS VARCHAR(100)
AS
    BEGIN
        DECLARE @n_data VARCHAR(20) ,
            @c_data VARCHAR(100) ,
            @n_str VARCHAR(10) ,
            @i INT
        SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS BIGINT) AS VARCHAR(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('零壹貳叄肆伍陸柒捌玖', 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('仟佰拾億仟佰拾萬仟佰拾圓角分', @i, 1)
                        IF SUBSTRING(@c_data, LEN(@c_data)-1, 2)='億萬'
                            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)
    ENDget

 

若是朋友們以爲之後可能會用到的話,歡迎轉載,固然也能夠推薦一下,謝謝。 it

PS:此博文是利用Windows Live Writer 2012編寫,格式效果可能不太好。 io

相關文章
相關標籤/搜索