编写一个函数实现将货币值用中文输出,例如12340.56,输出为:壹万二仟叁佰肆拾元伍角六分。 注:以下自定义函数只是用与integer.decimal(integer部分的位数小于等于8位,decimal部分的位数小于等于2位)
create function change1 --数字和中文的转换
(
@s varchar(1)
)
returns varchar(2)
as
begin
declare @ss varchar(2)
if @s=1
set @ss='壹'
else if @s=2
set @ss='贰'
else if @s=3
set @ss='叁'
else if @s=4
set @ss='肆'
else if @s=5
set @ss='伍'
else if @s=6
set @ss='陆'
else if @s=7
set @ss='柒'
else if @s=8
set @ss='捌'
else if @s=9
set @ss='玖'
return @ss
end
create function change --货币转为中文
(
@m money
)
returns varchar(max)
as
begin
declare @str varchar(max),@str_i varchar(max),@str_d varchar(max)
set @str=''
set @str_i=ltrim(str(@m)) --获取货币的整数部分并返回字符串
set @str_d=cast(@m as varchar(max))
set @str_d=right(@str_d,len(@str_d)-len(@str_i)-1) --获取小数部分并返回字符串
declare @i int,@j int --整数部分的转换
set @i=1
set @j=len(@str_i)
if @j=8
begin
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'仟'
set @j=@j-1
set @i=@i+1
end
if @j=7
begin
if substring(@str_i,@i,1)=0
begin
if substring(@str_i,@i+1,1)!=0
set @str=@str+'零'
end
else
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'佰'
set @j=@j-1
set @i=@i+1
end
if @j=6
begin
if substring(@str_i,@i,1)=0
begin
if substring(@str_i,@i+1,1)!=0
set @str=@str+'零'
end
else
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'拾'
set @j=@j-1
set @i=@i+1
end
if @j=5
begin
if substring(@str_i,@i,1)=0
set @str=@str+'万'
else
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'万'
set @j=@j-1
set @i=@i+1
end
if @j=4
begin
if substring(@str_i,@i,1)!=0
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'仟'
set @j=@j-1
set @i=@i+1
end
if @j=3
begin
if substring(@str_i,@i,1)=0
begin
if substring(@str_i,@i+1,1)!=0
set @str=@str+'零'
end
else
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'佰'
set @j=@j-1
set @i=@i+1
end
if @j=2
begin
if substring(@str_i,@i,1)=0
begin
if substring(@str_i,@i+1,1)!=0
set @str=@str+'零'
end
else
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'拾'
set @j=@j-1
set @i=@i+1
end
if @j=1
begin
if substring(@str_i,@i,1)=0
set @str=@str+'元'
else
set @str=@str+dbo.change1(substring(@str_i,@i,1))+'元'
set @j=@j-1
set @i=@i+1
end
set @i=1 --小数部分的转换
set @j=len(@str_d)
if @j=1
begin
if @str_d!=0
set @str=@str+dbo.change1(@str_d)+'角'
end
else if @j=2
begin
if left(@str_d,1)!=0
set @str=@str+dbo.change1(left(@str_d,1))+'角'
if right(@str_d,1)!=0
set @str=@str+dbo.change1(right(@str_d,1))+'分'
end
return @str
end