sql用户自定义函数实现将货币值用中文输出

 

编写一个函数实现将货币值用中文输出,例如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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值