(原创)自己写了一个数字转换成大小写,有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

数字大小写转换(包括金额)相关推荐

  1. C#、winfrom设置金额数字大小写转换

    C#.winfrom金额数字大小写转换 作者:张国军_Suger 开发工具与关键技术:Visual Studio 2015.C#..NET.winfrom 很多时候我们比如金额就需要对数字的小写转换成 ...

  2. angular 字符串转换成数字_3种方法搞定Excel中数字大小写转换? 123...变为壹贰叁......

    作者 | 雷哥 编辑 | 小西瓜 职场中,大家是否遇到这样的情况, 需要把数字"1,2,3......" 转换为 大写的"壹贰叁...",大家都有哪些方法可以实 ...

  3. 人民币数字大小写转换

    人民币数字大写转换 include <iostream> include <iostream> include <string> include <stdli ...

  4. python数字大小写转换代码_用python实现把数字人民币金额转换成大写的脚本程序...

    # -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( forma ...

  5. java 数字大小写转换工具类--适用于打印收据

    本工具类主要实现数字double1000.00====>>零万壹仟零佰零拾零元零角零分,注释很详细,就不多做介绍了 /*** 不考虑分隔符的正确性*/private static fina ...

  6. java 数字大小写转换_阿拉伯数字大小写转换java工具

    package org.centric.utils; import java.text.DecimalFormat; public class MoneyUtil { /** 大写数字 */  pri ...

  7. JS实现数字自动转换人民币金额(自动格式化输入的数字/千位分隔符)

    这个货币转换JS代码,可以实现自动格式化输入的数字,自动千位分隔符 <script> function cc(s){if(/[^0-9\.]/.test(s)) return " ...

  8. 数字大小写转换:如何把“0123456789”转换成“零一二三四五六七八九”?

    蜗牛日记20200218 中国大学MOOChttp://www.icourse163.org <Python语言程序设计>(11期) 2020年02月18日 10:00 - 2020年05 ...

  9. 【Excel神技】之 数字大小写转换

    Excel内容如下,如何将数字转换成大写: 一张图演示神技: 看懂了吗?效果如下:

最新文章

  1. mac搭建php审计环境,[php审计实战篇]Simple-Log v1.6 安装逻辑问题
  2. OpenCV类型转换
  3. TCP和Web Socket混合使用的一个例子
  4. delphi Oracle导出多个表,Oracle数据库自动备份工具(Delphi源码)
  5. 更新两个WPF开源项目
  6. 开源个.NetCore写的 - 并发请求工具PressureTool
  7. oracle之数据处理之视图
  8. Linux设备驱动模型3——platform平台总线工作原理
  9. 嵌入式Linux系统编程学习之三十三网络相关概念
  10. yum安装 vs 源码编译安装
  11. 【eclipse反编译工具】最好的反编译工具
  12. 5万字、97 张图总结操作系统核心知识点
  13. 计算机重装系统怎么链接打印机,如何连接打印机,详细教您电脑如何与打印机连接...
  14. Unity精华☀️二、到底是什么原因导致“万向锁”?旋转翻车的终极解析!
  15. Runway!AI技术+视频制作的新一代视频内容生成工具
  16. 【苹果CMS技术教程】苹果CMSV10宝塔全自动定时采集教程
  17. win10引导项误删修复
  18. Shufti Pro宣布获得2000万美元A轮融资以加速发展
  19. 决策树模型回归可视化分析_商业分析过程与数据探索
  20. 秒杀抢购活动性能测试记录

热门文章

  1. 在word中输入带方块的对号
  2. 新冠状病毒的基因序列
  3. 微型计算机的主要硬件以及技术指标,微型计算机的主要技术指标?
  4. 计算时针与分针之间的夹角
  5. 图形学实验 警察抓小偷
  6. Python综合实战对股票数据分析处理
  7. android launcher 调用 widget,Launcher3添加桌面appWidget
  8. 笔记本电脑,电池/电源适配器建议使用方式及疑难解答
  9. 考研英语小程序哪个好用?
  10. php session.cookie_path,php session和cookie使用说明