MSSQL 数字钱转化为大写
--说明:
--1.本函数范围从 毫 ~ 兆
--2.有四种精度(元,角 ,分,厘 ,毫)
--3.有三种进位规则(四舍五入,接舍去,非0就入)
--参数说明:dbo.MoneyToCapital( 数值 , 进位 , 精度)
--进位 (0 四舍五入, 1 直接舍去,2 非0就入)
--精确度 (0 元,1 角 ,2 分,3 厘 ,4 毫)
--------------------------------------------------------------------------------------------------------
--测试数据:
DECLARE @intNum decimal(38,4)
SET @intNum = 1123456780.2154
--SET @intNum = 1001
--SET @intNum = 100100
--SET @intNum = 1005001
--SET @intNum = 100.11
--SET @intNum = 100.00
--SET @intNum = 100.01
SET @intNum = 99999999999999.9999 -- 最大 <1百兆(精确到毫)
--SET @intNum = 10025.1234
--SET @intNum = 12345.6789
SELECT dbo.MoneyToCapital(@intNum,0,4)
--------------------------------------------------------------------------------------------------------
Go
CREATE FUNCTION MoneyToCapital
(
@mnyNumber decimal(38,4),
@intIsRound int = 0, -- 进位 (0 四舍五入, 1 直接舍去,2 非0就入)
@intPrecision int = 2 -- 精确度: 0 元,1 角 ,2 分,3 厘 ,4 毫
)
RETURNS nvarchar(50)
BEGIN
DECLARE @strReturn nvarchar(50)
DECLARE @strMoney varchar(50)
DECLARE @intLen int
DECLARE @strC1 char(1)
DECLARE @strC2 char(1)
DECLARE @strC3 char(1)
DECLARE @intJ int
DECLARE @necMoney decimal(38,4)
DECLARE @strMoneyUnit nvarchar(50)
DECLARE @strNumberCapital nvarchar(50)
SET @strMoneyUnit = '毫厘分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟京拾佰仟'
SET @strNumberCapital = '零壹贰叁肆伍陆柒捌玖'
--0 的情况
IF @mnyNumber = 0 BEGIN
SET @strReturn = '零元整'
RETURN @strReturn
END
--超出范围 的情况
IF @mnyNumber < 0 OR @mnyNumber > 99999999999999.9999 BEGIN RETURN CAST(@mnyNumber AS varchar(50))
END
------进位 超出范围
IF @intIsRound<0 OR @intIsRound>2 BEGIN
SET @intIsRound = 0
END
------精确度 超出范围
IF @intPrecision<0 OR @intPrecision>4 BEGIN
SET @intPrecision = 2
END
IF @intIsRound =1 BEGIN--直接舍去 SET @mnyNumber = ROUND(@mnyNumber,2,1)
END
ELSE IF @intIsRound = 2 BEGIN--非0就入 SET @mnyNumber = ROUND(@mnyNumber,2)
END
ELSE BEGIN--四舍五入 SET @mnyNumber = ROUND(@mnyNumber,@intPrecision)
END SET @necMoney = @mnyNumber * POWER(10,@intPrecision) --精确度 @intPrecision
SET @strMoney = CAST(CAST(@necMoney AS bigint) AS varchar(50))
SET @intLen = LEN(@strMoney) --长度
SET @strMoney = REVERSE(@strMoney) --逆转
SET @strReturn='' SET @intJ = 1 -- @intPrecision 精确度: 0 元,1 角 ,2 分,3 厘 ,4 毫( 1 开始对应 毫)
WHILE @intJ <= @intLen BEGIN SET @strC1 = SUBSTRING(@strMoney,@intJ-1,1)
SET @strC2 = SUBSTRING(@strMoney,@intJ,1)
SET @strC3 = SUBSTRING(@strMoney,@intJ+1,1) SET @strReturn = SUBSTRING(@strNumberCapital , CAST(@strC2 AS int)+1 , 1) +SUBSTRING(@strMoneyUnit , @intJ+4-@intPrecision , 1) + @strReturn
SET @intJ = @intJ + 1
END --替换多余的部分
set @returnStr = replace(@returnStr,'零亿','零')
set @returnStr = replace(@returnStr,'零千','零')
set @returnStr = replace(@returnStr,'零百','零')
set @returnStr = replace(@returnStr,'零拾','零')
set @returnStr = replace(@returnStr,'零零零','零')
set @returnStr = replace(@returnStr,'零零','零')
set @returnStr = replace(@returnStr,'零万','万')
set @returnStr = replace(@returnStr,'零元','元')
set @returnStr = replace(@returnStr,'零角','零')
set @returnStr = replace(@returnStr,'零分','') while left(@returnStr,1) = '零'
Begin
set @returnStr = right(@returnStr,len(@returnStr)-1)
end
if ((left(@returnStr,1)='万'))
begin
set @returnStr = right(@returnStr,len(@returnStr)-1)
end
if ((left(@returnStr,1)='元'))
begin
set @returnStr = right(@returnStr,len(@returnStr)-1)
end
while left(@returnStr,1) = '零'
Begin
set @returnStr = right(@returnStr,len(@returnStr)-1)
end
while right(@returnStr,1) = '零'
Begin
set @returnStr = left(@returnStr,len(@returnStr)-1)
end set @returnStr = replace(@returnStr,'亿万','亿零')
set @returnStr = replace(@returnStr,'零元','元')
set @returnStr = replace(@returnStr,'零零零','零')
set @returnStr = replace(@returnStr,'零零','零') if (@returnStr='')
begin
set @returnStr = '零元'
end
if ((right(@returnStr,1)='元'))
begin
set @returnStr = @returnStr + '整'
end RETURN @strReturn
END --String1 = "零壹贰叁肆伍陆柒捌玖"
--String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分厘毫"
MSSQL 数字钱转化为大写的更多相关文章
- JAVA将数字钱数转换为大写
1.Java文件的编写 package com.cwai.xtag; import java.util.Scanner; public class Num2Rmb { private String[] ...
- Java将日期转化为大写格式(阿拉伯大写数字)
效果: 代码部分: public static void main(String[] args) { SimpleDateFormat sdf=new SimpleDateFormat("y ...
- C#小写数字金额转换成大写人民币金额的算法
C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
- C# 数字转换成汉字大写 数值转换成汉字大写
1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com st ...
- Python3.x:判断字符串是否为全数字、英文、大写、小写、空白字符
Python3.x:判断字符串是否为全数字.英文.大写.小写.空白字符 判断接字符串是否为数字: str = raw_input("please input the number:" ...
- js 将数字转换成中文大写
//完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五. const toChinesNum = ...
- php 把数字转化为大写中文
PHP 数字转大写中文 PHP入门小菜鸟一枚.下午要求写一个把数字转成大写中文的脚本,百度了一波,几十个博客和网站都是用的那四个代码,第一个运行不了,第二个有问题,不合要求,第三个第四个太长,懒得看, ...
随机推荐
- Hyper-V网络配置
Hyper-V虚拟交换机类型应用: 外部虚拟网络: 可以实现虚拟机之间.虚拟机和物理机.虚拟机和外部网络的通信. 生产环境不勾选“允许管理操作系统共享此网络适配器”,勾选之后会为主机创建虚拟网卡,会实 ...
- Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞
Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...
- C# 图片保存到数据库和从数据库读取图片并显示
图片保存到数据库的方法: public void imgToDB(string sql) { //参数sql中要求保存的imge变量名称为@images //调 ...
- 一个坐标点围绕任意中心点旋转--C#实现
假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转RotaryAngle角度后的新的坐标设为(x', y'),有公式: x'= (x - rx0)*cos(RotaryAngle) ...
- JS_CSS_logon_Mask
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Yar - Yet Another RPC framework for PHP
Introduction Yar is a RPC framework which aims to provide a simple and easy way to do communication ...
- Android进阶笔记07:Android之MVC 理解
1. 为什么需要MVC ? 软件中最核心的,最基本的东西是什么? 答:是的,是数据.我们写的所有代码,都是围绕数据的. 围绕着数据的产生.修改等变化,出现了业务逻辑. 围绕着数 ...
- FineUploader 学习笔记
FineUploader既是开源的又是收费的,这个没搞懂. 先看效果:
- c语言实现:4和7幸运数字的题
#include <stdio.h> #include <math.h> #include <vector> using namespace std; int ma ...
- SandBox+NSBundle
1.iOS的文件系统 1.1.SandBox(沙箱.沙盒) 在iOS中,任何一个App都存放在自己的一个称之为SandBox中 1)SandBox的组成 a.Bundle Container:放应用程 ...