在给银行报送数据时候需要安装银行所要求的格式进行报送:
例如:
工行要求:19位帐号+空格+17位金额+空格+三个000
如:4100100001111111 00000000000003970 000
帐号不足19位补空格,金额不足17位前面补0,并去掉小数点,如39.7元为00000000000003970后再加“空格”和三个“0”
怎么实现录入:帐号、金额后自动生成银行所要的格式,请高手帮帮忙!!
例如:
工行要求:19位帐号+空格+17位金额+空格+三个000
如:4100100001111111 00000000000003970 000
帐号不足19位补空格,金额不足17位前面补0,并去掉小数点,如39.7元为00000000000003970后再加“空格”和三个“0”
怎么实现录入:帐号、金额后自动生成银行所要的格式,请高手帮帮忙!!
declare @帐号 varchar(19),@金额 float
set @帐号='4100100001111111'
set @金额=39.7select left(@帐号+replicate(' ',19),19)+' '+right(replicate('0',17)+substring(convert(varchar(17),@金额),1,charindex('.',convert(varchar(17),@金额))-1)+left(substring(convert(varchar(17),@金额),charindex('.',convert(varchar(17),@金额))+1,2)+'00',2),17)+' 000'
-----------------------------------------------------------------------------
4100100001111111 00000000000003970 000(1 行受影响)
declare @帐号 varchar(19),@金额 float
set @帐号='410010000'
set @金额=39.7
set @金额=cast(@金额 as int)
select replicate('0',19-len(@帐号))+@帐号+' '+replicate('0',17-len(@金额))+ltrim(@金额)+' 000'
declare @帐号 varchar(19),@金额 float
set @帐号='4100100001111111'
set @金额=39.7
select left(@帐号+replicate(' ',19),19)+' '
+right(replicate('0',17)+replace(cast(@金额 as varchar(17)),'.','')+'0',17)
+' 000'
--其實變量的數據類型定義得合適的話可以省很多事
declare @acc char(19), @money decimal(17, 2)
select @acc = '123', @money = 1.2
select @acc + ' ' + replicate('0', 17 - len(@money) + 1) +
replace(convert(char, @money), '.', '') + ' 000'