将小写金额转换为英文

原创 2004年10月29日 16:17:00
CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2))
RETURNS varchar(400) WITH ENCRYPTION
AS
BEGIN
--All rights reserved. pbsql
  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金额转换成英文大写的函数

用法如下:get_capital_money(Currency, Money) Currency: 货币或货币描述,将放在英文大写的前面; Money:金额。支持两位小数点。如果需要更多的小数点,请自...
  • fyq891014
  • fyq891014
  • 2014年12月18日 17:48
  • 1912

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

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

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

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

大写金额转换成小写

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

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

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

Java将小写金额转换成大写

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

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

function changeChineseNumber(num) { if (isNaN(num) || num > Math.pow(10, 12)) return "" ...
  • u013806366
  • 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
  • vogts
  • 2005年07月14日 12:15
  • 2277

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

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

C# 人民币金额转大写

using System; namespace DotNet.Utilities { /// /// Rmb 的摘要说明。 /// public class...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2017年04月18日 23:37
  • 242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将小写金额转换为英文
举报原因:
原因补充:

(最多只允许输入30个字)