0

我正在将一个 3 或 4 位整数插入需要该数字为 5 位长的表中。如何在转帐时在 4 位数字后添加 0,在 3 位数字后添加前导和后跟 0?

编辑 - 这是触发器的一部分,定义如下:

create trigger Trig on T2 
after insert, update, delete 
as  
  -- So that @@rowcount does not get affected by trigger code     
set NoCount on  
  -- If c3 column participated in update (it most certainly did in insert)
if update(C3)
begin
  -- Insert or update triggered this operation
 if exists (select * from Inserted)
  begin
         insert into P1 (C1, C2, C3)
         select T1.C2, T1.C3, T2.C3 --INFORMATION THAT NEEDS TO BE TRANSFERRED 
         from T1
         -- Inserted is a pseudotable holding inserted/updated data
         inner join inserted T2
         on T1.C1 = T2.C2
         where T2.C4 <> 9 --DETERMINES IF RECORD NEEDS TO BE TRANSFERRED
  end
     else
     -- Separate insert for deleted records
     -- To simplify inserting additional info for deleted records only
     begin
         insert into P1 (C1, C2, C3)
         select T1.C2, T1.C3, T2.C3 --INFORMATION THAT NEEDS TO BE TRANSFERRED
         from T1
      -- deleted is a pseudotable holding deleted/updated data
         inner join deleted T2
         on T1.C1 = T2.C2
         where T2.C4 <> 9 --DETERMINES IF RECORD NEEDS TO BE TRANSFERRED
     end
 end 

将 T2.C3 视为引脚号

4

2 回答 2

1

为什么需要存储这个?只需将其添加到查询中或创建一个视图即可:

SELECT RIGHT('0' + RTRIM(Number) + '0', 5) FROM dbo.TableName;

您当然可以在将值放入表中时对它们执行相同的操作(通过修改插入语句或使用触发器,如果​​您对 DML 的控制较少)。

于 2012-08-10T17:53:46.653 回答
0

这可以接受吗?

declare @PINs as Table ( PIN Int )
insert into @PINs ( PIN ) values ( 123 ), ( 4321 ), ( 12345 ), ( 5000 )
select Left( Right( '0' + Cast( PIN as VarChar(5) ), 5 ) + '0', 5 )
  from @PINs

根据您的问题陈述,它要求 PIN 值大于 99。

于 2012-08-10T18:31:46.553 回答