人民币小写金额转大写
来源:互联网 发布:专业seo公司 编辑:程序博客网 时间:2024/05/01 23:57
-- ====================================================================-- Title: 人民币小写金额转大写-- Author: dobear Mail(MSN): dobear_0922@hotmail.com-- Environment: Vista + SQL2005-- Date: 2008-06-12-- Remark: dobear原创,转载请注明出处,有问题请发Mail告之-- ====================================================================IF OBJECT_ID('fn_GetFormatMoney', N'FN') IS NOT NULLDROP FUNCTION fn_GetFormatMoney GOCREATE FUNCTION dbo.fn_GetFormatMoney (@money numeric(14,2))RETURNS NVARCHAR(32) ASBEGINDECLARE @money_num NVARCHAR(20)--存储金额的字符形式, @money_chn NVARCHAR(32)--存储金额的中文大写形式, @n_chn NVARCHAR(1), @i INT--临时变量SELECT @money_chn=CASE WHEN @money>=0 THEN '' ELSE '(负)' END, @money=ABS(@money), @money_num=STUFF(STR(@money, 15, 2), 13, 1, '')--加前置空格补齐到14位(去掉小数点), @i=PATINDEX('%[1-9]%', @money_num)--找到金额最高位WHILE @i>=1 and @i<=14BEGINSET @n_chn=SUBSTRING(@money_num, @i, 1) IF @n_chn<>'0' or (SUBSTRING(@money_num,@i+1,1)<>'0' and @i not in(4, 8, 12, 14))--转换阿拉伯数字为中文大写形式 SET @money_chn=@money_chn+SUBSTRING('零壹贰叁肆伍陆柒捌玖', @n_chn+1, 1)IF @n_chn<>'0' or @i in(4, 8, 12)--添加中文单位SET @money_chn=@money_chn+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1) SET @i=@i+1ENDSET @money_chn=REPLACE(@money_chn, '亿万', '亿')--当金额为X亿零万时去掉万IF @money=0 SET @money_chn='零圆整'--当金额为零时返回'零圆整'IF @n_chn='0' SET @money_chn=@money_chn+'整'--当金额末尾为零分时以'整'结尾RETURN @money_chn--返回大写金额ENDGO
测试:
GOCREATE TABLE tb_money(id INT IDENTITY(1,1) PRIMARY KEY, m NUMERIC(14,2))INSERT tb_money SELECT 0UNION ALL SELECT 0.01UNION ALL SELECT 0.2UNION ALL SELECT 0.35UNION ALL SELECT 230UNION ALL SELECT 10000.2UNION ALL SELECT 10020.3UNION ALL SELECT 10300.45UNION ALL SELECT -10304.07UNION ALL SELECT 30210020UNION ALL SELECT -3020000UNION ALL SELECT 3020400UNION ALL SELECT 302040000000UNION ALL SELECT 302004000000.1select m as '小写金额', dbo.fn_GetFormatMoney(m) as '大写金额' from tb_money/*小写金额 大写金额--------------------------------------- --------------------------------0.00 零圆整0.01 壹分0.20 贰角整0.35 叁角伍分230.00 贰佰叁拾圆整10000.20 壹万圆贰角整10020.30 壹万零贰拾圆叁角整10300.45 壹万零叁佰圆肆角伍分-10304.07 (负)壹万零叁佰零肆圆零柒分30210020.00 叁仟零贰拾壹万零贰拾圆整-3020000.00 (负)叁佰零贰万圆整3020400.00 叁佰零贰万零肆佰圆整302040000000.00 叁仟零贰拾亿肆仟万圆整302004000000.10 叁仟零贰拾亿零肆佰万圆壹角整(14 row(s) affected)*/DROP TABLE tb_money
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币小写金额转大写
- 人民币小写金额转大写金额
- (转)人民币小写金额转大写(SQL)
- [MSSQL]人民币小写金额转大写
- SQL人民币小写金额转大写
- 人民币小写金额转大写金额的算法
- 算法:Unicode版人民币小写金额转大写金额
- 【叶子函数分享十八】人民币小写金额转大写
- 【叶子函数分享十八】人民币小写金额转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 人民币小写转大写
- 用VC 调试 Shellcode 方法
- 单骑破百
- 人民币小写金额转大写
- WinLogon事件通知包编程
- 人民币小写金额转大写
- 人民币小写金额转大写
- 在ASP.NET页面中使用SolpartMenu控件
- 第一篇日志
- 老公生存手册
- oracle的伪列以及伪表
- oracle的伪列以及伪表
- oracle的伪列以及伪表
- 暂停学习linux
- Linux下apache+svn的安装与配置