我們日常開發業務系統中,作為統計報表中,特別是財務報表,顯示中文金額經常遇到。
轉換大小寫的方法有很多,以下是從數據庫函數方面解決這一問題.
效果如圖:
調用:SELECT dbo.[Fn_ConvertRMB](192.4)
具體函數如下:
-- ============================================= -- 調用: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) END
如果朋友們覺得以后可能會用到的話,歡迎轉載,當然也可以推薦一下,謝謝。
PS:此博文是利用Windows Live Writer 2012編寫,格式效果可能不太好。
新聞熱點
疑難解答