zoukankan      html  css  js  c++  java
  • 阿拉伯数字金额转换为中文大写之存储过程(更新版)

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

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

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

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

    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 bigint) + 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 的值。


    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

    --最后将多余的零去掉

    while CharIndex('亿亿',@ReturnValue) <> 0
    begin
    Select @ReturnValue = Replace(@ReturnValue, '亿亿', '亿')
    end
    If CharIndex('亿万',@ReturnValue) <> 0
    Select @ReturnValue = Replace(@ReturnValue, '亿万', '')

    while CharIndex('万万',@ReturnValue) <> 0
    begin
    Select @ReturnValue = Replace(@ReturnValue, '万万', '万')
    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, '零仟', '零')

    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 @ReturnDaXie=@ReturnValue

    GO

  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/nianshi/p/700916.html
Copyright © 2011-2022 走看看