SQL轉換數字中文大寫

2022-08-20 02:42:17 字數 4191 閱讀 9983

1.--------------------------

alter function [dbo].[fn_lowertouppermoney](@num   numeric(14,2))  

returns   nvarchar(100)   with   encryption  

as  

begin  

declare   @n_data   nvarchar(20),@c_data   nvarchar(100),@n_str   nvarchar(10),@i   int  

set   @n_data=right(space(14)+cast(cast(abs(@num*100)   as   bigint)   as   varchar(20)),14)  

set   @c_data=''  

set   @i=1  

while   @i<=14  

begin  

set   @n_str=substring(@n_data,@i,1)  

if   @n_str<>'   '  

begin  

if   not   ((substring(@n_data,@i,2)='00')   or  

((@n_str='0')   and   ((@i=4)   or   (@i=8)   or   (@i=12)   or   (@i=14))))  

set   @c_data=@c_data+substring(n'零壹貳叄肆伍陸柒捌玖',cast(@n_str   as   int)+1,1)  

if   not   ((@n_str='0')   and   (@i<>4)   and   (@i<>8)   and   (@i<>12))  

set   @c_data=@c_data+substring(n'仟佰拾億仟佰拾萬仟佰拾元角分',@i,1)  

if   substring(@c_data,len(@c_data)-1,2)=n'億萬'  

set   @c_data=substring(@c_data,1,len(@c_data)-1)  

end  

set   @i=@i+1  

end  

if   @num<0  

set   @c_data=n'(負數)'+@c_data  

if   @num=0  

set   @c_data=n'零元'  

if   @n_str='0'  

set   @c_data=@c_data+n'整'  

return(@c_data)  

end

2.-----------------------

alter function [dbo].[fn_lowertouppermoney](@changemoney numeric(15,2))

returns nvarchar(200) as

begin

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, '元元', '元')

if charindex('零元',@returnvalue) <> 0

select @returnvalue = replace(@returnvalue, '零元', '元')

return @returnvalue

end

數字轉換成中文大寫

轉換數字金額主函式 包括小數 數字字串 轉換成中文大寫後的字串或者出錯資訊提示字串 public string convertsum string str 判斷是否是正數字字串 判斷字串 如果是數字,返回true,否則返回false public bool ispositvedecimal stri...

數字轉換成中文大寫

實現思路 1.輸入的是一串特定的字串,格式 1111.11,2.拿到內容之後,將內容以小數點分成兩部分 3.定義好長度對應的單位,比如 兩位數是拾,定義好數值對應的中文大寫字元,4.根據字元的長度迴圈轉換中文大寫以及新增對應的單位 原始碼如下 public class convertochinese...

python 轉換數字為中文的大寫

python 轉換為中文的大寫數字,比較簡單,有需要的同學可以拿去使用,沒做角和分 可以自己修改 下面為 coding utf 8 importlogging importurllib2 urllib2.request host num 1,2,3,4,5,6,7,8,9,0 cn 壹 貳 叄 肆 ...