数字小写转大写

来源:互联网 发布:pigcms 2017最新源码 编辑:程序博客网 时间:2024/04/30 10:34

在财务发票中通常在记录金额的同时需要记录其大写形式,如下为金额小写转换为大写形式。

CREATE FUNCTION [dbo].[ufnGetChineseFormat](@money NUMERIC(14,2))RETURNS NVARCHAR(32)ASBEGINDECLARE @moneyStr NVARCHAR(20)   --存储金额的字符形式        ,@moneyCHS NVARCHAR(32)  --存储金额的中文大写形式        ,@flag VARCHAR(1)        ,@i INT        SELECT @moneyCHS = CASE WHEN @money > 0 THEN '' ELSE '(负)' END       ,@money = ABS(@money)       ,@moneyStr = STUFF(STR(@money,15,2),13,1,'') --加前置空格补齐到位(去掉小数点)       ,@i = PATINDEX('%[1-9]%',@moneyStr)          ----找到金额最高位       WHILE @i >= 1 AND @i <= 14BEGINSET @flag = SUBSTRING(@moneyStr,@i,1)IF @flag <> '0' OR (SUBSTRING(@moneyStr,@i+1,1) <> '0' AND @i NOT IN(4, 8, 12, 14))    --转换阿拉伯数字为中文大写形式   SET @moneyCHS=@moneyCHS+SUBSTRING('零壹贰叁肆伍陆柒捌玖', @flag+1, 1)IF @flag <> '0' OR @i IN(4, 8, 12)    --添加中文单位SET @moneyCHS=@moneyCHS+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾元角分',@i,1)SET @i = @i + 1ENDSET @moneyCHS = REPLACE(@moneyCHS, '亿万', '亿')    --当金额为x亿零万时去掉万if @money = 0 set @moneyCHS = '零元整'            --当金额为零时返回'零元整'    if @flag = '0' set @moneyCHS = @moneyCHS + '整'    --当金额末尾为零分时以'整'结尾RETURN @moneyCHS ENDGO


原创粉丝点击