# 将小写金额转换为英文

CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2))
RETURNS varchar(400) WITH ENCRYPTION
AS
BEGIN
DECLARE @i int,@hundreds int,@tenth int,@one int
DECLARE @thousand int,@million int,@billion int
DECLARE @numbers varchar(400),@s varchar(15),@result varchar(400)
SET @numbers='one       two       three     four      five      '
+'six       seven     eight     nine      ten       '
+'eleven    twelve    thirteen  fourteen  fifteen   '
+'sixteen   seventeen eighteen  nineteen  '
+'twenty    thirty    forty     fifty     '
+'sixty     seventy   eighty    ninety    '
SET @s=RIGHT('000000000000000'+CAST(@num AS varchar(15)),15)
SET @billion=CAST(SUBSTRING(@s,1,3) AS int)--将12位整数分成4段：十亿、百万、千、百十个
SET @million=CAST(SUBSTRING(@s,4,3) AS int)
SET @thousand=CAST(SUBSTRING(@s,7,3) AS int)
SET @result=''
SET @i=0
WHILE @i<=3
BEGIN
SET @hundreds=CAST(SUBSTRING(@s,@i*3+1,1) AS int)--百位0-9
SET @tenth=CAST(SUBSTRING(@s,@i*3+2,1) AS int)
SET @one=(CASE @tenth WHEN 1 THEN 10 ELSE 0 END)+CAST(SUBSTRING(@s,@i*3+3,1) AS int)--个位0-19
SET @tenth=(CASE WHEN @tenth<=1 THEN 0 ELSE @tenth END)--十位0、2-9
IF (@i=1 and @billion>0 and (@million>0 or @thousand>0 or @hundreds>0)) or
(@i=2 and (@billion>0 or @million>0) and (@thousand>0 or @hundreds>0)) or
(@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds>0))
SET @result=@result+', '--百位不是0则每段之间加连接符,
IF (@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds=0 and (@tenth>0 or @one>0)))
SET @result=@result+' and '--百位是0则加连接符AND
IF @hundreds>0
SET @result=@result+RTRIM(SUBSTRING(@numbers,@hundreds*10-9,10))+' hundred'
IF @tenth>=2 and @tenth<=9
BEGIN
IF @hundreds>0
SET @result=@result+' and '
SET @result=@result+RTRIM(SUBSTRING(@numbers,@tenth*10+171,10))
END
IF @one>=1 and @one<=19
BEGIN
IF @tenth>0
SET @result=@result+'-'
ELSE
IF @hundreds>0
SET @result=@result+' and '
SET @result=@result+RTRIM(SUBSTRING(@numbers,@one*10-9,10))
END
IF @i=0 and @billion>0
SET @result=@result+' billion'
IF @i=1 and @million>0
SET @result=@result+' million'
IF @i=2 and @thousand>0
SET @result=@result+' thousand'
SET @i=@i+1
END
IF SUBSTRING(@s,14,2)<>'00'
BEGIN
SET @result=@result+' point '
IF SUBSTRING(@s,14,1)='0'
SET @result=@result+'zero'
ELSE
SET @result=@result+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,14,1) AS int)*10-9,10))
IF SUBSTRING(@s,15,1)<>'0'
SET @result=@result+' '+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,15,1) AS int)*10-9,10))
END
RETURN(@result)
END
GO
• 本文已收录于以下专栏：

## ORACLE金额转换成英文大写的函数

• fyq891014
• 2014年12月18日 17:48
• 1912

## JS将人民币小写金额转换为大写

/** 数字金额大写转换(可以处理整数,小数,负数) */ function smalltoBIG(n) { var fraction = ['角', '分']; v...
• k8080880
• 2016年12月07日 12:03
• 663

## Oracle实现小写金额转换成大写的方法

Oracle实现小写金额转换成大写的方法，代码如下： CREATE OR REPLACE FUNCTION convert_money(n_LowerMoney IN NUMBER,       ...
• pyq228
• 2011年10月26日 14:47
• 723

## 大写金额转换成小写

Q:如何将大写金额转换成小写？ A:简单点，格式比较严格private float getMoney(string strBig)        ...{            string strE...
• jinjazz
• 2007年12月04日 19:11
• 2442

## 用java将小写的金额转换为大写的金额

package com.tzsw.emhr.relieft.rttpub;//import dori.jasper.engine.*;import java.util.ArrayList;import...
• Explorerwen
• 2005年02月23日 14:10
• 1375

## Java将小写金额转换成大写

public class Test { private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分"; private static final St...
• leayefang
• 2016年11月09日 13:19
• 1428

## js 将页面小写金额转换成大写金额

function changeChineseNumber(num) { if (isNaN(num) || num > Math.pow(10, 12)) return "" ...
• u013806366
• 2014年10月27日 14:04
• 1385

## ORACLE将数字转换成英文显示

Convert Numbers to Words by Brian Membrey, The PaperBag Software Company Pty Ltd I guess a mundane e...
• vogts
• 2005年07月14日 12:15
• 2277

## Excel数字小写金额转换汉字大写金额公式的简单设置

_________ Excel数字小写金额转换汉字大写金额公式的简单设置  华能呼伦贝尔能源有限公司 卞学敏 Excel数字小写金额转换汉字大写金额公式在会计工作中是经常应用到的，它能提高工作效...
• mfkpie
• 2014年05月31日 23:19
• 17898

## C# 人民币金额转大写

using System; namespace DotNet.Utilities { /// /// Rmb 的摘要说明。 /// public class...
• zuoyefeng1990
• 2017年04月18日 23:37
• 242

举报原因： 您举报文章：将小写金额转换为英文 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)