CREATE PROCEDURE [Z_GetRMBUpper] @RMB decimal(12,2)=1111.00,@str_RMB varchar(100) out AS
set nocount on
declare
@ws_RMB varchar(20),
@tmp varchar(1),
@n varchar(4),
@unit varchar(4),
@lenrmb int,
@i int,
@rmbsts char(1)
set @str_rmb=''
if @rmb>=0
set @rmbsts='T'
else
set @rmbsts='F'
set @rmb=abs(@rmb)
set @i=1
set @ws_RMB =ltrim(convert(varchar(11),convert(decimal(12,2),@RMB)))
if @rmbsts='T'
set @ws_rmb='/'+rtrim(@ws_rmb)
else
set @ws_rmb='\'+rtrim(@ws_rmb)
set @lenrmb=len(@ws_rmb)
while @i<=@lenrmb
begin
set @tmp=substring(rtrim(@ws_rmb),@lenrmb-@i+1,1)
set @n=case when @tmp='1' then '壹 '
when @tmp='2' then '贰'
when @tmp='3' then '叁'
when @tmp='4' then '肆'
when @tmp='5' then '伍'
when @tmp='6' then '陆'
when @tmp='7' then '柒'
when @tmp='8' then '捌'
when @tmp='9' then '玖'
when @tmp='0' then '零'
when @tmp='/' then '¥'
when @tmp='\' then '零'
when @tmp='.' then '' end
if @tmp<>'/' and @tmp<>'\'
set @unit=case when @i=1 then '分'
when @i=2 then '角'
when @i=3 then ''
when @i=4 then '元'
when @i=5 then '拾'
when @i=6 then '佰'
when @i=7 then '仟'
when @i=8 then '万'
when @i=9 then '拾'
when @i=10 then '零 '
end
else set @unit=''
set @str_rmb=@n+@unit+@str_rmb
set @i=@i+1
end
set nocount on
declare
@ws_RMB varchar(20),
@tmp varchar(1),
@n varchar(4),
@unit varchar(4),
@lenrmb int,
@i int,
@rmbsts char(1)
set @str_rmb=''
if @rmb>=0
set @rmbsts='T'
else
set @rmbsts='F'
set @rmb=abs(@rmb)
set @i=1
set @ws_RMB =ltrim(convert(varchar(11),convert(decimal(12,2),@RMB)))
if @rmbsts='T'
set @ws_rmb='/'+rtrim(@ws_rmb)
else
set @ws_rmb='\'+rtrim(@ws_rmb)
set @lenrmb=len(@ws_rmb)
while @i<=@lenrmb
begin
set @tmp=substring(rtrim(@ws_rmb),@lenrmb-@i+1,1)
set @n=case when @tmp='1' then '壹 '
when @tmp='2' then '贰'
when @tmp='3' then '叁'
when @tmp='4' then '肆'
when @tmp='5' then '伍'
when @tmp='6' then '陆'
when @tmp='7' then '柒'
when @tmp='8' then '捌'
when @tmp='9' then '玖'
when @tmp='0' then '零'
when @tmp='/' then '¥'
when @tmp='\' then '零'
when @tmp='.' then '' end
if @tmp<>'/' and @tmp<>'\'
set @unit=case when @i=1 then '分'
when @i=2 then '角'
when @i=3 then ''
when @i=4 then '元'
when @i=5 then '拾'
when @i=6 then '佰'
when @i=7 then '仟'
when @i=8 then '万'
when @i=9 then '拾'
when @i=10 then '零 '
end
else set @unit=''
set @str_rmb=@n+@unit+@str_rmb
set @i=@i+1
end
很简单的一条语句就搞定了,
在MSSQL里应该也可以同样实现
晚上我找出来给你们看看
procedure TForm1.Button1Click(Sender: TObject);
var
Sum:real;
begin
sum:=strtofloat(edit1.Text);
edit2.Text:='人民币大写:'+xTOd(Sum);
end;function xTOd(i:real):string;
const
d='零壹贰叁肆伍陆柒捌玖分角元拾佰仟万拾佰仟亿';
var
m,k:string;
j:integer;
begin
k:='';
m:=floattostr(int(i*100));
for j:=length(m) downto 1 do
begin
k:=k+d[(strtoint(m[Length(m)-j+1])+1)*2-1]+
d[(strtoint(m[Length(m)-j+1])+1)*2]+d[(10+j)*2-1]+d[(10+j)*2];
end;
xTOd:=k;
end;