create function dbo.TCN
(@x varchar(50)) returns varchar(100)
begin
declare @r varchar(100),@zs varchar(50),@xs varchar(50)
declare @a int,@b int
if @x='' or len(@x)=0
begin
select @r=''
return @r
end
declare @gc table(i tinyint,d varchar(5))
declare @hs table(i tinyint,d varchar(5))
insert into @gc(i,d)
select 1,'壹' union all
select 2,'贰' union all
select 3,'叁' union all
select 4,'肆' union all
select 5,'伍' union all
select 6,'陆' union all
select 7,'柒' union all
select 8,'捌' union all
select 9,'玖'
insert into @hs(i,d)
select 1,'' union all
select 2,'拾' union all
select 3,'佰' union all
select 4,'仟' union all
select 5,'万' union all
select 6,'拾' union all
select 7,'佰' union all
select 8,'仟' union all
select 9,'亿' union all
select 10,'拾'
select @x=case when charindex('.',@x,1)=0 then @x+'.00'
when (len(@x)-charindex('.',@x,1))=1 then @x+'0'
else @x end
select @zs=left(@x,charindex('.',@x,1)-1),
@xs=right(@x,len(@x)-charindex('.',@x,1)),
@r='',
@a=1,
@b=len(@zs)
while(@a<=len(@zs))
begin
if substring(@zs,@a,1)='0' and right(@r,1)<>'零'
begin
select @r=@r+'零'
end
else
begin
If substring(@zs,@a,1)<>'0'
begin
select @r=@r+isnull((select top 1 d from @gc where i=cast(substring(@zs,@a,1) as tinyint)),'')
select @r=@r+isnull((select top 1 d from @hs where i=cast(@b as tinyint)),'')
end
end
if len(@zs)>=6
begin
if left(right(@zs,5),1)='0' and @b=5
begin
select @r=left(@r,len(@r)-1)
select @r=@r+'万'
end
end
select @a=@a+1,@b=@b-1
end
if @xs='00'
begin
select @r=replace(@r+'元整','零元','元')
return @r
end
select @r=replace(@r+'元','零元','元')
if substring(@xs,1,1)<>'0'
begin
select @r=@r+isnull((select top 1 d from @gc where i=cast(substring(@xs,1,1) as tinyint)),'')+'角'
end
if substring(@xs,2,1)<>'0'
begin
select @r=@r+isnull((select top 1 d from @gc where i=cast(substring(@xs,2,1) as tinyint)),'')+'分'
end
else
begin
select @r=@r+'整'
end
return @r
end
-- 测试
select dbo.TCN('1335.32') 'x1',dbo.TCN('533100.3') 'x2'
/*
x1 x2
------------------------------ ------------------------------
壹仟叁佰叁拾伍元叁角贰分 伍拾叁万叁仟壹佰元叁角整
(1 row(s) affected)
*/TSQL 大写金额转换函数
最新推荐文章于 2024-07-04 11:31:39 发布
本文介绍了一个SQL自定义函数TCN的实现细节,该函数能够将数字字符串转换为中文大写金额。通过创建临时表并使用循环逻辑,TCN函数能够处理包括小数在内的各种数值格式。
1113

被折叠的 条评论
为什么被折叠?



