数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
金额阿拉伯数字转换为中文的存储过程

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

金额阿拉伯数字转换为中文的存储过程
Create   Procedure   AtoC
  @ChangeMoney   Money  
as
  Set Nocount ON
  Declare   @String1   char(20)
  Declare   @String2   char(30)
  Declare   @String4   Varchar(100)
  Declare @String3   Varchar(100)   --从原A值中取出的值
    Declare @i       int     --循环变量
  Declare @J       Int     --A的值乘以100的字符串长度
    Declare @Ch1       Varchar(100)   --数字的汉语读法
    Declare @Ch2       Varchar(100)   --数字位的汉字读法
  Declare @Zero       Int     --用来计算连续有几个零
  Declare   @ReturnValue   VarChar(100)

  Select @ReturnValue = ''
  Select   @String1 = '零壹贰叁肆伍陆柒捌玖'
  Select   @String2 = '万仟佰拾亿仟佰拾万仟佰拾元角分'

  Select @String4 = Cast(@ChangeMoney*100 as int)  

  select @J=len(cast((@ChangeMoney*100) as int))

  Select @String2=Right(@String2,@J)

  Select   @i = 1

  while   @i<= @j Begin

    Select @String3 = Substring(@String4,@i,1)

    if @String3<>'0' Begin

        Select   @Ch1 = Substring(@String1, Cast(@String3 as Int) + 1, 1)
        Select   @Ch2 = Substring(@String2, @i, 1)
        Select   @Zero = 0             --表示本位不为零
    end
    else Begin
        If (@Zero = 0) Or (@i = @J - 9) Or (@i = @J - 5) Or (@i = @J - 1)
                Select @Ch1 = '零'
            Else
                Select @Ch1 = ''

            Select @Zero = @Zero + 1         --表示本位为0
               
        --如果转换的数值需要扩大,那么需改动以下表达式 I 的值。
        Select Ch2 = ''

          If @i = @J - 10 Begin
                Select @Ch2 = '亿'
                Select @Zero = 0
        end
           
        If @i = @J - 6 Begin
                Select @Ch2 = '万'
                Select @Zero = 0
        end
           
        if @i = @J - 2 Begin
                Select @Ch2 = '元'
                Select @Zero = 0
        end
           
        If @i = @J
                Select @Ch2 = '整'
               
    end  

    Select @ReturnValue = @ReturnValue + @Ch1 + @Ch2

    select @i = @i+1
  end

  --最后将多余的零去掉
  If CharIndex('仟仟',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '仟仟', '仟')

  If CharIndex('佰佰',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '佰佰', '佰')

    If CharIndex('零元',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '零元', '元')
 
    If CharIndex('零万',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '零万', '万')
 
    If CharIndex('零亿',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '零亿', '亿')
 
    If CharIndex('零整',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '零整', '整')
 
  If CharIndex('零佰',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '零佰', '零')

  If CharIndex('零仟',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '零仟', '零')

  If CharIndex('元元',@ReturnValue) <> 0
        Select @ReturnValue = Replace(@ReturnValue, '元元', '元')
 
  Select @ReturnValue
GO



相关文章

相关软件