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 壹 貳 叄 肆 ...