create function UpperRMB(@num numeric(14,2))returns @rmb table(亿  varchar(2),仟万   varchar(2),佰万   varchar(2),拾万   varchar(2),万        varchar(2),仟        varchar(2),佰        varchar(2),拾        varchar(2),元        varchar(2),角        varchar(2),分        varchar(2))asbegininsert into @rmbselect (case 亿1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖'else '' end) as 亿,  (case 仟万1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖'else '' end) as 仟万,  (case 佰万1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 佰万,    (case 拾万1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 拾万,           (case 万1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 万,          (case 仟1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 仟,          (case 佰1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 佰,          (case 拾1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 拾,          (case 元1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 元,          (case 角1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 角,          (case 分1          when 0 then '零'          when 1 then '壹'          when 2 then '贰'          when 3 then '叁'          when 4 then '肆'          when 5 then '伍'          when 6 then '陆'          when 7 then '柒'          when 8 then '捌'          when 9 then '玖' else '' end) as 分
from (     select case when len(ltrim(str(@num*100,14)))>=11 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),11),1) ) else null end as 亿1,case when len(ltrim(str(@num*100,14)))>=10 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),10),1) ) else null end as 仟万1,case when len(ltrim(str(@num*100,14)))>=9 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),9),1) ) else null end as 佰万1,  case when len(ltrim(str(@num*100,14)))>=8 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),8),1) ) else null end as 拾万1,     case when len(ltrim(str(@num*100,14)))>=7 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),7),1) ) else null end as 万1,          case when len(ltrim(str(@num*100,14)))>=6 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),6),1) ) else null end as 仟1,          case when len(ltrim(str(@num*100,14)))>=5 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),5),1) ) else null end as 佰1,          case when len(ltrim(str(@num*100,14)))>=4 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),4),1) ) else null end as 拾1,          case when len(ltrim(str(@num*100,14)))>=3 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),3),1) ) else null end as 元1,          case when len(ltrim(str(@num*100,14)))>=2 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),2),1) ) else null end as 角1,          case when len(ltrim(str(@num*100,14)))>=1 then convert(varchar(10),left(right(ltrim(str(@num*100,14)),1),1) ) else null end as 分1    ) kkreturnend/*
select * from upperrmb(123456789.12)select 亿+'亿'+仟万+'仟'+佰万+'佰'+拾万+'拾'+万+'万'+仟+'仟'+佰+'佰'+拾+'拾'+元+'元'+角+'角'+分+'分' AS [人民币大写]
from upperrmb(123456789.12)--其实单位也可以在函数内设定
*/
CREATE function dbo.toUppercaseRMB ( @LowerMoney decimal(18,4))
returns varchar(200)
as
begin    declare @lowerStr varchar(200)    declare @UpperStr varchar(200)    declare @UpperPart varchar(200)     --长度    declare @i int     set @lowerStr=ltrim(rtrim(convert(decimal(18,2),round(@LowerMoney,2))))    set @i=1    set @UpperStr=''    while(@i<=len(@lowerStr))    begin    select @UpperPart=case substring(@lowerStr,len(@lowerStr)-@i+1,1)--取最后一位数when  '.' then '元'    when  '0' then '零'    when  '1' then '壹'    when  '2' then '贰'    when  '3' then '叁'    when  '4' then '肆'    when  '5' then '伍'    when  '6' then '陆'    when  '7' then '柒'    when  '8' then '捌'    when  '9' then '玖'    end    +    case @i     when 1 then  '分'    when 2 then  '角'    when 3 then  ''    when 4 then  ''    when 5 then  '拾'    when 6 then  '佰'    when 7 then  '仟'    when 8 then  '万'    when 9 then  '拾'    when 10 then '佰'    when 11 then '仟'    when 12 then '亿'    when 13 then '拾'    when 14 then '佰'    when 15 then '仟'    when 16 then '万'    else ''    end    set @UpperStr=@UpperPart+@UpperStr    set @i=@i+1    end     set @UpperStr = REPLACE(@UpperStr,'零拾','零')     set @UpperStr = REPLACE(@UpperStr,'零佰','零')     set @UpperStr = REPLACE(@UpperStr,'零仟零佰零拾','零')     set @UpperStr  = REPLACE(@UpperStr,'零仟','零')    set @UpperStr = REPLACE(@UpperStr,'零零零','零')    set @UpperStr = REPLACE(@UpperStr,'零零','零')    set @UpperStr = REPLACE(@UpperStr,'零角零分','')    set @UpperStr = REPLACE(@UpperStr,'零分','')    set @UpperStr = REPLACE(@UpperStr,'零角','零')    set @UpperStr = REPLACE(@UpperStr,'零亿零万零元','亿元')    set @UpperStr = REPLACE(@UpperStr,'亿零万零元','亿元')    set @UpperStr = REPLACE(@UpperStr,'零亿零万','亿')    set @UpperStr = REPLACE(@UpperStr,'零万零元','万元')    set @UpperStr = REPLACE(@UpperStr,'万零元','万元')    set @UpperStr = REPLACE(@UpperStr,'零亿','亿')    set @UpperStr = REPLACE(@UpperStr,'零万','万')    set @UpperStr = REPLACE(@UpperStr,'零元','元')    set @UpperStr = REPLACE(@UpperStr,'零零','零')    if left(@UpperStr,1)='元'    set @UpperStr = REPLACE(@UpperStr,'元','零元')    return @UpperStr+'整'
end    --       SELECT DBO.TOUPPERCASERMB(123456.789)

sql 数字转人民币大写函数(两种方法)相关推荐

  1. php人民币函数,PHP数字转人民币大写函数

    PHP数字转人民币大写函数2018-04-23 09:59 如果你是一位财务人员,肯定遇到过一个问题,就是遇到一串数字,要将其写成大写的人民币,有时很容易搞错. 那么有没有什么方法可以准确的解决呢? ...

  2. PTA—念数字(C语言)两种方法

    PTA-念数字(C语言)两种方法 输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出fu字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: ...

  3. oracle 数字转人民币大写函数

    oralce中用于将数据转换为人民币大写的函数.. function to_rmbdx(i_money in varchar2) return varchar2 is i       number; ...

  4. SQL Server 批量插入数据的两种方法(转)

    原文:http://blog.csdn.net/tjvictor/article/details/4360030 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数 ...

  5. 【转载】SQL Server 批量插入数据的两种方法

    在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...

  6. java从高位到低位输出_任意输入一个正整数,从高位向低位依次输出,或从低位向高位依次输出(数组,调用函数两种方法)...

    第一种方法:利用数组存储 //从低位到高位输出 #include int main() { int x,i;int a[50]; int k=0; printf("请输出一个数") ...

  7. JS字符串中的第一个字母大写(两种方法)

    如何将字符串中的第一个字母大写 一个非常常见的操作是将字符串的第一个字母大写.虽然许多编程语言都有一种本地方法来实现这一点,但 JS 需要做一些工作. <!DOCTYPE HTML> &l ...

  8. 数字转化为字符串的两种方法

    public static void main(String[] args) {int a = 100;//使用空字符串相加数字,会自动变成字符串类型String str = "" ...

  9. 将数字转化为字符串的两种方法

    for(int i = 0; i < nums.length; i++) 1.strs[i] = String.valueOf(nums[i]): 2.strs[i] = Integer.toS ...

最新文章

  1. qt获取窗口的右上角位置_如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置...
  2. Linux内核编译和测试
  3. Turtlebot3-burger使用时一些注意事项
  4. jQuery事件绑定on()、bind()与delegate() 方法详解
  5. 13/100. Best Time to Buy and Sell Stock
  6. Photoshop脚本 使用ExtendScript编写Ps脚本
  7. Facebook 中国程序员之死
  8. java中解密技术是什么_详解Java 加密解密技术的分类和归纳
  9. gcc编译器_2020好用的C++编译器有哪些?这几款值得下载
  10. [每日一题] 11gOCP 1z0-052 :2013-09-24 temporary tables.........................................C11...
  11. 开发 Windows 8 Bing地图应用(4)
  12. JavaEE学习14--过滤器filter
  13. phpcount数组报错_PHPExcel把导入的excel表格转换为数组,然后运行,浏览器什么也不显示,也不报错...
  14. deepin驱动精灵_解决宏基笔记本没有Qualcomm_Atheros_QCA9377无线驱动
  15. 把图片url 伪静态 php,thinkphp5系列之URL伪静态(生成优雅的URL)
  16. FME 坐标系使用(二)----关于Beijing54坐标系和Xian80坐标系说明的补充
  17. {dede-list flag='h'}DedeCMS支持flag标签解决办法
  18. oracle访问syno,[Oracle]同义词(synonym)
  19. linux默认的分区是fat,linux下开机自动挂载FAT分区
  20. 81-RabbitMQ详解

热门文章

  1. 如何在Windows上VMware上安装macOS Catalina 10.15
  2. HDU 3177 Crixalis's Equipment (贪心)
  3. 中国央视网---中国公开课
  4. ### Paper about Event Detection
  5. AutoCAD中扩展图元数据的应用
  6. 令人惊讶的《暗月世界》
  7. 动环监控厂家,动环监控系统厂家对比
  8. 实验五——手工编写PE文件
  9. VMWARE虚拟网卡丢失,解决方案
  10. 26个字母的爱情诠释