sql 数字转人民币大写函数(两种方法)
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 数字转人民币大写函数(两种方法)相关推荐
- php人民币函数,PHP数字转人民币大写函数
PHP数字转人民币大写函数2018-04-23 09:59 如果你是一位财务人员,肯定遇到过一个问题,就是遇到一串数字,要将其写成大写的人民币,有时很容易搞错. 那么有没有什么方法可以准确的解决呢? ...
- PTA—念数字(C语言)两种方法
PTA-念数字(C语言)两种方法 输入一个整数,输出每个数字对应的拼音.当整数为负数时,先输出fu字.十个数字对应的拼音如下: 0: ling 1: yi 2: er 3: san 4: si 5: ...
- oracle 数字转人民币大写函数
oralce中用于将数据转换为人民币大写的函数.. function to_rmbdx(i_money in varchar2) return varchar2 is i number; ...
- SQL Server 批量插入数据的两种方法(转)
原文:http://blog.csdn.net/tjvictor/article/details/4360030 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数 ...
- 【转载】SQL Server 批量插入数据的两种方法
在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量 ...
- java从高位到低位输出_任意输入一个正整数,从高位向低位依次输出,或从低位向高位依次输出(数组,调用函数两种方法)...
第一种方法:利用数组存储 //从低位到高位输出 #include int main() { int x,i;int a[50]; int k=0; printf("请输出一个数") ...
- JS字符串中的第一个字母大写(两种方法)
如何将字符串中的第一个字母大写 一个非常常见的操作是将字符串的第一个字母大写.虽然许多编程语言都有一种本地方法来实现这一点,但 JS 需要做一些工作. <!DOCTYPE HTML> &l ...
- 数字转化为字符串的两种方法
public static void main(String[] args) {int a = 100;//使用空字符串相加数字,会自动变成字符串类型String str = "" ...
- 将数字转化为字符串的两种方法
for(int i = 0; i < nums.length; i++) 1.strs[i] = String.valueOf(nums[i]): 2.strs[i] = Integer.toS ...
最新文章
- qt获取窗口的右上角位置_如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置...
- Linux内核编译和测试
- Turtlebot3-burger使用时一些注意事项
- jQuery事件绑定on()、bind()与delegate() 方法详解
- 13/100. Best Time to Buy and Sell Stock
- Photoshop脚本 使用ExtendScript编写Ps脚本
- Facebook 中国程序员之死
- java中解密技术是什么_详解Java 加密解密技术的分类和归纳
- gcc编译器_2020好用的C++编译器有哪些?这几款值得下载
- [每日一题] 11gOCP 1z0-052 :2013-09-24 temporary tables.........................................C11...
- 开发 Windows 8 Bing地图应用(4)
- JavaEE学习14--过滤器filter
- phpcount数组报错_PHPExcel把导入的excel表格转换为数组,然后运行,浏览器什么也不显示,也不报错...
- deepin驱动精灵_解决宏基笔记本没有Qualcomm_Atheros_QCA9377无线驱动
- 把图片url 伪静态 php,thinkphp5系列之URL伪静态(生成优雅的URL)
- FME 坐标系使用(二)----关于Beijing54坐标系和Xian80坐标系说明的补充
- {dede-list flag='h'}DedeCMS支持flag标签解决办法
- oracle访问syno,[Oracle]同义词(synonym)
- linux默认的分区是fat,linux下开机自动挂载FAT分区
- 81-RabbitMQ详解