數字金額大小寫轉換之儲存過程

2021-08-29 06:23:43 字數 2764 閱讀 5721

來自:

create procedure moneytochinese22 --阿拉伯數字金額轉換為中文大寫

@changemoney money ,@returndaxie varchar(50) output

asset 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 --表示本位不為零

endelse 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

endif @i = @j - 6 begin

select @ch2 = '萬'

select @zero = 0

endif @i = @j - 2 begin

select @ch2 = '元'

select @zero = 0

endif @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 @returndaxie=@returnvalue

go

金額大小寫轉換!

把數字轉換成中文大寫金額,分以下小數截位 param dblmoney double 數字 param blnfull boolean false,2001.30 貳仟零壹元叄角整 true,2001.30 貳仟零佰零拾壹元叄角零分 param bzheng boolean 是否強制末尾加整字 如果...

C winfrom設定金額數字大小寫轉換

張 suger 開發工具與關鍵技術 visual studio 2015 c net winfrom 很多時候我們比如金額就需要對數字的小寫轉換成大寫模式,因此我查詢了歸納了如下方法,希望能幫到小夥伴。實現截圖 實現 region 數字小寫轉大寫 public static string cnumt...

人民幣金額大小寫轉換

大家在編寫涉及到金額的程式的時候,有時候需要將小寫的人民幣金額轉換成大寫表示 下面的 介紹了轉換的實現過程,大家可以參考一下 pragma warning disable 4786 include include include include using std vector using std ...