在给银行报送数据时候需要安装银行所要求的格式进行报送:
例如:
工行要求:19位帐号+空格+17位金额+空格+三个000
如:4100100001111111    00000000000003970 000
帐号不足19位补空格,金额不足17位前面补0,并去掉小数点,如39.7元为00000000000003970后再加“空格”和三个“0”
怎么实现录入:帐号、金额后自动生成银行所要的格式,请高手帮帮忙!!

解决方案 »

  1.   


    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 行受影响)
      

  2.   


    declare @帐号 varchar(19),@金额  float
    set @帐号='410010000' 
    set @金额=39.7
    set @金额=cast(@金额 as int)
    select replicate('0',19-len(@帐号))+@帐号+' '+replicate('0',17-len(@金额))+ltrim(@金额)+' 000'
      

  3.   


    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'
      

  4.   


    --其實變量的數據類型定義得合適的話可以省很多事
    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'