-- ====================================================================
-- 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 NULL
DROP FUNCTION fn_GetFormatMoney
GO
CREATE FUNCTION dbo.fn_GetFormatMoney (@money numeric(14,2))
RETURNS NVARCHAR(32) AS
BEGIN
DECLARE @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<=14
BEGIN
SET @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+1
END
SET @money_chn=REPLACE(@money_chn, '亿万', '亿')    --当金额为X亿零万时去掉万
IF @money=0 SET @money_chn='零圆整'  --当金额为零时返回'零圆整'
IF @n_chn='0' SET @money_chn=@money_chn+'整'   --当金额末尾为零分时以'整'结尾
RETURN @money_chn  --返回大写金额
END
GO

测试:

GO
CREATE TABLE tb_money(id INT IDENTITY(1,1) PRIMARY KEY, m NUMERIC(14,2))
INSERT tb_money SELECT 0
UNION ALL SELECT 0.01
UNION ALL SELECT 0.2
UNION ALL SELECT 0.35
UNION ALL SELECT 230
UNION ALL SELECT 10000.2
UNION ALL SELECT 10020.3
UNION ALL SELECT 10300.45
UNION ALL SELECT -10304.07
UNION ALL SELECT 30210020
UNION ALL SELECT -3020000
UNION ALL SELECT 3020400
UNION ALL SELECT 302040000000
UNION ALL SELECT 302004000000.1
select 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

人民币小写金额转大写相关推荐

  1. SQL人民币小写金额转大写

    --1.人民币小写金额转大写(第一版) ==================================================================== -- Title: 人 ...

  2. JS人民币小写金额转换为大写(没毛病)

    /** * 人民币小写金额转换为大写 */ export const digitUppercase = (n) => {let fraction = ['角', '分'] let digit = ...

  3. (转)人民币小写金额转大写(SQL)

    以下转自 http://www.qeqoo.com/dev/database/dbms/3216.html -- =========================================== ...

  4. 【叶子函数分享十八】人民币小写金额转大写

    --1.人民币小写金额转大写(第一版) ==================================================================== -- Title: 人 ...

  5. js 人民币小写金额转换为大写

    function smalltoBIG(n) {var fraction = ['角', '分'];var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒 ...

  6. oracle人民币转大写,Oracle 小写金额转换为大写

    在开发EBS的合同报表打印的时候需要将小写金额转换为大写. 如下是本人自己写的转换函数. 主要思路:先获取小数点位置,在区分整数与小数点处理,根据位数和数字组合读取金额. 最后再处理特殊显示部分. / ...

  7. 人民币小写金额转大写金额

    #region 人民币小写金额转大写金额/// <summary>/// 小写金额转大写金额/// </summary>/// <param name="Mon ...

  8. 工具篇——MoneyFormatUtil(用于将人民币小写金额转换成大写金额)

    写代码的四点: 1.明确需求.要做什么? 2.分析思路.要怎么做?(1,2,3--) 3.确定步骤.每一个思路要用到哪些语句.方法和对象. 4.代码实现.用具体的语言代码将思路实现出来. 学习新技术的 ...

  9. php大写转为小写,PHP 实现人民币小写转换成大写的方法及大小写转换函数

    php 的 PHP 实现人民币小写转换成大写的方法及大小写转换函数 下面一段代码给大家分享php实现人民币大小写转换的方法,具体代码如下所示: header("charset=utf-8;& ...

最新文章

  1. 京东横刀,堵了拼多多“升级”的路
  2. 关于struts2在页面请求转发到action的问题
  3. 巧用ActionFilter的AOP特性,为返回的数据增加返回码和消息
  4. Kotlin之函数作为参数传递
  5. 使用C#实现Form窗体的淡入淡出效果
  6. body-content取值的意义
  7. 当下的互联网时代,“急功近利”不是坏事
  8. Android手机常见隐藏代码
  9. 分治法——查找问题 —— 寻找一个序列中第k小的元素和查找最大和次大元素
  10. 【Unity Shader】---UnityShader 提供的CG/HLSL语义
  11. 怎么维护 SQLite
  12. UCF101数据集提取帧+TDN部署(Anaconda+Python3.7+Pytorch)
  13. 打造面向时代的“云中广科”,广科牵手华为探索校企合作新范式
  14. pythonjam教程_colorama(pythonjam官网)
  15. python语言转换为go_从 Python 到 Golang-Go语言中文社区
  16. 量化思维与常见的量化标
  17. Ubuntu断点续存之wget
  18. CAD查看器软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  19. 多重引导的另一种方法
  20. Aspose.Words使用教程大全

热门文章

  1. Jugglefest
  2. matlab 中关于nargin 以及 varargin 函数的使用
  3. 计算机基本键盘应用,计算机键盘基础知识
  4. 一个工厂有m条流水线
  5. 3dsmax顶点死活焊接不上的原因!
  6. 锻炼完美腹肌的7条原则
  7. 工程材料学习2——第一章 材料的结构与性能特点
  8. 一、C++基础入门之 Windows下C/C++开发环境配置
  9. 携手腾讯官方打造,微信(统信UOS版)首发
  10. SOIC8E (EXPOSED PAD)