sql server函数将人民币数字转换成大写形式 create function [dbo].[f_num_chn] (@num numeric(14,5)) returns varchar(100) with encryption as begin declare @n_data varchar(20),@c_data varchar(100),@n_str varchar(10),@i int set @n_data=right(s
sql server函数将人民币数字转换成大写形式
create function [dbo].[f_num_chn] (@num numeric(14,5))
returns varchar(100) with encryption
as
begin
declare @n_data varchar(20),@c_data varchar(100),@n_str varchar(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
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('零壹贰叁肆伍陆柒捌玖',cast(@n_str as int)+1,1)
if not ((@n_str='0') and (@i4) and (@i8) and (@i12))
set @c_data=@c_data+substring('仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1)
if substring(@c_data,len(@c_data)-1,2)='亿万'
set @c_data=substring(@c_data,1,len(@c_data)-1)
end
set @i=@i+1
end
if @num
set @c_data='(负数)'+@c_data
if @num=0
set @c_data='零圆'
if @n_str='0'
set @c_data=@c_data+'整'
return(@c_data)
end
sql server函数将人民币数字转换成大写形式
闲着也是闲着,欢迎大家多提宝贵意见
--阿拉伯数字转中文大写数字
create function ntocc(@n int)
returns varchar(2)
as
begin
declare @s varchar(2)
if @n=0
set @s=''零''
if @n=1
set @s=''壹''
if @n=2
set @s=''贰''
if @n=3
set @s=''叁''
if @n=4
set @s=''肆''
if @n=5
set @s=''伍''
if @n=6
set @s=''陆''
if @n=7
set @s=''柒''
if @n=8
set @s=''捌''
if @n=9
set @s=''玖''
return @s
end
--可支持到上亿
create function numbertochinesebigstring(@m money)
returns varchar(255)
begin
declare @i varchar(255)
declare @f varchar(255)
declare @r varchar(255)
declare @s varchar(255)
set @s=convert(varchar(255),@m)
if charindex(''.'',@s)>0
begin
set @i=substring(@s,1,charindex(''.'',@s)-1)
set @f=substring(@s,charindex(''.'',@s)+1,len(@s))
end
else
set @i=@s
set @r=''''
declare @k int
set @k=len(@i)
while @k>=1
begin
--最多9位
if @k=9
set @r=@r+
dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))
--@i
+''亿''
if @k=8
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''千''
if @k=7
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''佰''
if @k=6
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''拾''
if @k=5
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''万''
if @k=4
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''千''
if @k=3
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''佰''
if @k=2
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''拾''
if @k=1
set @r=@r+dbo.ntocc(convert(int,substring(reverse(@i),@k,1)))+''元''
set @k=@k-1
end
if convert(float,@f)=0
set @r=@r+''整''
else
begin
if substring(@s,1,1)>''''
set @r=@r+dbo.ntocc(convert(int,substring(@f,1,1)))+''角''
if substring(@s,2,1)>''''
set @r=@r+dbo.ntocc(convert(int,substring(@f,2,1)))+''分''
end