数字大小写转换(包括金额)
(原创)自己写了一个数字转换成大小写,有8种格式,大家可以相互转载,请注明出处。
/*
传入一组数,返回其大写格式
@Num 数
@FormatType 格式( 【数字大写】100:普通格式 101:[数量]单位格式 102:只处理整数部份 103:金额加单位格式
【中文大写】200:普通格式 201:[数量]单位格式 202:只处理整数部份 203:金额加单位格式
)
*/
CREATE FUNCTION GetNumberFormat(@Num numeric(18,4),@FormatType INT)
RETURNS NVARCHAR(100)
AS
BEGIN
DECLARE @RE NVARCHAR(100) --返回值
DECLARE @FormatNum NVARCHAR(100) --需要格式化的数据
DECLARE @DecimalPlace NVARCHAR(100) --需要格式化的数据的小数位
DECLARE @LenNum INT --长度
DECLARE @String1 NVARCHAR(50) --单位1
DECLARE @String2 NVARCHAR(50) --单位2
DECLARE @String3 NVARCHAR(50) --单位3
SELECT @DecimalPlace = N''
SELECT @String1 = N'元角分厘'
SELECT @String2 = N'十百千万十百千亿十百千万十百千'
SELECT @String3 = N'拾佰仟万拾佰仟亿拾佰仟万拾佰仟'
SELECT @FormatNum=CONVERT(NVARCHAR(100),@Num)
SELECT @RE=N''
SELECT @LenNum=LEN(@Num)
IF @FormatType = 100 OR @FormatType = 101 OR @FormatType = 102 OR @FormatType = 103
BEGIN
SELECT @FormatNum = Replace(@FormatNum,N'0',N'零')
SELECT @FormatNum = Replace(@FormatNum,N'1',N'一')
SELECT @FormatNum = Replace(@FormatNum,N'2',N'二')
SELECT @FormatNum = Replace(@FormatNum,N'3',N'三')
SELECT @FormatNum = Replace(@FormatNum,N'4',N'四')
SELECT @FormatNum = Replace(@FormatNum,N'5',N'五')
SELECT @FormatNum = Replace(@FormatNum,N'6',N'六')
SELECT @FormatNum = Replace(@FormatNum,N'7',N'七')
SELECT @FormatNum = Replace(@FormatNum,N'8',N'八')
SELECT @FormatNum = Replace(@FormatNum,N'9',N'九')
END
ELSE IF @FormatType = 200 OR @FormatType = 201 OR @FormatType = 202 OR @FormatType = 203
BEGIN
SELECT @FormatNum = Replace(@FormatNum,N'0',N'零')
SELECT @FormatNum = Replace(@FormatNum,N'1',N'壹')
SELECT @FormatNum = Replace(@FormatNum,N'2',N'贰')
SELECT @FormatNum = Replace(@FormatNum,N'3',N'叁')
SELECT @FormatNum = Replace(@FormatNum,N'4',N'肆')
SELECT @FormatNum = Replace(@FormatNum,N'5',N'伍')
SELECT @FormatNum = Replace(@FormatNum,N'6',N'陆')
SELECT @FormatNum = Replace(@FormatNum,N'7',N'柒')
SELECT @FormatNum = Replace(@FormatNum,N'8',N'捌')
SELECT @FormatNum = Replace(@FormatNum,N'9',N'玖')
END
IF @LenNum=0
BEGIN
SET @RE = N''
END
ELSE
BEGIN
IF @FormatType=100 OR @FormatType=200
BEGIN
SET @RE = @FormatNum
END
ELSE IF @FormatType=101 OR @FormatType=201 OR @FormatType = 103 OR @FormatType=102 OR @FormatType=202 OR @FormatType = 203
BEGIN
IF CHARINDEX('.',@FormatNum)!=0
BEGIN
--小数位
SET @DecimalPlace = RIGHT(@FormatNum,@LenNum-CHARINDEX('.',@FormatNum))
--整数位
SET @FormatNum = LEFT(@FormatNum,CHARINDEX('.',@FormatNum)-1)
--重置整数长度
SELECT @LenNum=LEN(@FormatNum)
END
WHILE (@LenNum >0)
BEGIN
SET @RE=@RE+SUBSTRING(@FormatNum,LEN(@FormatNum)+1-@LenNum,1)
IF @LenNum!=1
BEGIN
IF @FormatType=101 OR @FormatType=102 OR @FormatType = 103
BEGIN
SET @RE=@RE+SUBSTRING(@String2,@LenNum-1,1)
END
ELSE IF @FormatType=201 OR @FormatType=202 OR @FormatType = 203
BEGIN
SET @RE=@RE+SUBSTRING(@String3,@LenNum-1,1)
END
END
SET @LenNum=@LenNum-1
END
--处理整数返回格式
IF @FormatType=101 OR @FormatType=102 OR @FormatType = 103
BEGIN
SELECT @RE = Replace(@RE,N'零千零百零十零亿',N'亿')
SELECT @RE = Replace(@RE,N'零百零十零亿',N'亿')
SELECT @RE = Replace(@RE,N'零十零亿',N'亿')
SELECT @RE = Replace(@RE,N'零亿',N'亿')
SELECT @RE = Replace(@RE,N'零千零百零十零万',N'万')
SELECT @RE = Replace(@RE,N'零百零十零万',N'万')
SELECT @RE = Replace(@RE,N'零十零万',N'万')
SELECT @RE = Replace(@RE,N'零万',N'万')
SELECT @RE = Replace(@RE,N'零千零百零十零',N'')
SELECT @RE = Replace(@RE,N'亿万',N'亿')
SELECT @RE = Replace(@RE,N'零百零十零',N'')
SELECT @RE = Replace(@RE,N'零十零',N'')
SELECT @RE = Replace(@RE,N'零',N'')
SELECT @RE = Replace(@RE,N'千百',N'千零')
SELECT @RE = Replace(@RE,N'亿千零十',N'亿零')
SELECT @RE = Replace(@RE,N'千零十',N'千零')
SELECT @RE = Replace(@RE,N'万千零',N'万零')
SELECT @RE = Replace(@RE,N'亿千零',N'亿零')
SELECT @RE = Replace(@RE,N'亿千',N'亿零')
SELECT @RE = Replace(@RE,N'万千',N'万零')
SELECT @RE = Replace(@RE,N'百十',N'百零')
END
ELSE IF @FormatType=201 OR @FormatType=202 OR @FormatType = 203
BEGIN
SELECT @RE = Replace(@RE,N'零仟零佰零拾零亿',N'亿')
SELECT @RE = Replace(@RE,N'零佰零拾零亿',N'亿')
SELECT @RE = Replace(@RE,N'零拾零亿',N'亿')
SELECT @RE = Replace(@RE,N'零亿',N'亿')
SELECT @RE = Replace(@RE,N'零仟零佰零拾零万',N'万')
SELECT @RE = Replace(@RE,N'零佰零拾零万',N'万')
SELECT @RE = Replace(@RE,N'零拾零万',N'万')
SELECT @RE = Replace(@RE,N'零万',N'万')
SELECT @RE = Replace(@RE,N'零仟零佰零拾零',N'')
SELECT @RE = Replace(@RE,N'亿万',N'亿')
SELECT @RE = Replace(@RE,N'零佰零拾零',N'')
SELECT @RE = Replace(@RE,N'零拾零',N'')
SELECT @RE = Replace(@RE,N'零',N'')
SELECT @RE = Replace(@RE,N'仟佰',N'仟零')
SELECT @RE = Replace(@RE,N'亿千零拾',N'亿零')
SELECT @RE = Replace(@RE,N'仟零拾',N'仟零')
SELECT @RE = Replace(@RE,N'万仟零',N'万零')
SELECT @RE = Replace(@RE,N'亿仟零',N'亿零')
SELECT @RE = Replace(@RE,N'亿仟',N'亿零')
SELECT @RE = Replace(@RE,N'万仟',N'万零')
SELECT @RE = Replace(@RE,N'佰拾',N'佰零')
END
IF (@FormatType=101 OR @FormatType=103 OR @FormatType=201 OR @FormatType=203) AND LEN(@DecimalPlace)!=0
BEGIN
--重置小数位长度
SELECT @LenNum=LEN(@DecimalPlace)
IF @FormatType=101 OR @FormatType=201
BEGIN
SET @RE=@RE+N'.'+@DecimalPlace
END
ELSE IF @FormatType=103 OR @FormatType=203
BEGIN
WHILE (@LenNum >=0)
BEGIN
SET @RE=@RE+SUBSTRING(@DecimalPlace,LEN(@DecimalPlace)-@LenNum-1,1)
SET @RE=@RE+SUBSTRING(@String1,LEN(@DecimalPlace)-@LenNum,1)
SET @LenNum=@LenNum-1
END
END
--处理小数返回格式
IF @FormatType=101 OR @FormatType=201
BEGIN
SELECT @RE = Replace(@RE,N'.零零零零',N'')
END
ELSE IF @FormatType=103 OR @FormatType=203
BEGIN
SELECT @RE = Replace(@RE,N'零角零分零厘零',N'整')
SELECT @RE = Replace(@RE,N'零角零分零厘',N'整')
SELECT @RE = Replace(@RE,N'零角零分',N'零')
SELECT @RE = Replace(@RE,N'零角',N'零')
SELECT @RE = Replace(@RE,N'零分零厘',N'')
SELECT @RE = Replace(@RE,N'零厘',N'')
SELECT @RE = Replace(@RE,N'零分',N'零')
SELECT @RE = Replace(@RE,N'元零零',N'零')
END
END
IF @Num=0
BEGIN
SET @RE=N'零'
END
END
END
RETURN @RE
END
数字大小写转换(包括金额)相关推荐
- C#、winfrom设置金额数字大小写转换
C#.winfrom金额数字大小写转换 作者:张国军_Suger 开发工具与关键技术:Visual Studio 2015.C#..NET.winfrom 很多时候我们比如金额就需要对数字的小写转换成 ...
- angular 字符串转换成数字_3种方法搞定Excel中数字大小写转换? 123...变为壹贰叁......
作者 | 雷哥 编辑 | 小西瓜 职场中,大家是否遇到这样的情况, 需要把数字"1,2,3......" 转换为 大写的"壹贰叁...",大家都有哪些方法可以实 ...
- 人民币数字大小写转换
人民币数字大写转换 include <iostream> include <iostream> include <string> include <stdli ...
- python数字大小写转换代码_用python实现把数字人民币金额转换成大写的脚本程序...
# -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( forma ...
- java 数字大小写转换工具类--适用于打印收据
本工具类主要实现数字double1000.00====>>零万壹仟零佰零拾零元零角零分,注释很详细,就不多做介绍了 /*** 不考虑分隔符的正确性*/private static fina ...
- java 数字大小写转换_阿拉伯数字大小写转换java工具
package org.centric.utils; import java.text.DecimalFormat; public class MoneyUtil { /** 大写数字 */ pri ...
- JS实现数字自动转换人民币金额(自动格式化输入的数字/千位分隔符)
这个货币转换JS代码,可以实现自动格式化输入的数字,自动千位分隔符 <script> function cc(s){if(/[^0-9\.]/.test(s)) return " ...
- 数字大小写转换:如何把“0123456789”转换成“零一二三四五六七八九”?
蜗牛日记20200218 中国大学MOOChttp://www.icourse163.org <Python语言程序设计>(11期) 2020年02月18日 10:00 - 2020年05 ...
- 【Excel神技】之 数字大小写转换
Excel内容如下,如何将数字转换成大写: 一张图演示神技: 看懂了吗?效果如下:
最新文章
- mac搭建php审计环境,[php审计实战篇]Simple-Log v1.6 安装逻辑问题
- OpenCV类型转换
- TCP和Web Socket混合使用的一个例子
- delphi Oracle导出多个表,Oracle数据库自动备份工具(Delphi源码)
- 更新两个WPF开源项目
- 开源个.NetCore写的 - 并发请求工具PressureTool
- oracle之数据处理之视图
- Linux设备驱动模型3——platform平台总线工作原理
- 嵌入式Linux系统编程学习之三十三网络相关概念
- yum安装 vs 源码编译安装
- 【eclipse反编译工具】最好的反编译工具
- 5万字、97 张图总结操作系统核心知识点
- 计算机重装系统怎么链接打印机,如何连接打印机,详细教您电脑如何与打印机连接...
- Unity精华☀️二、到底是什么原因导致“万向锁”?旋转翻车的终极解析!
- Runway!AI技术+视频制作的新一代视频内容生成工具
- 【苹果CMS技术教程】苹果CMSV10宝塔全自动定时采集教程
- win10引导项误删修复
- Shufti Pro宣布获得2000万美元A轮融资以加速发展
- 决策树模型回归可视化分析_商业分析过程与数据探索
- 秒杀抢购活动性能测试记录