create table T
(
[1] varchar(10),
[2] varchar(10),
[3] varchar(10),
[4] varchar(10),
x varchar(10)
);
insert into T
select '0','X','0','2','0'
union
select '1','2','Y','2','0'
union
select '3','X','X','2','0'
union
select '0','Y','1','2','0'declare @i int,@i_column varchar(10)
set @i=1
set @i_column=''
while @i<=4
begin
set @i_column='['+cast(@i as varchar(10))+']'
update T set x=cast(x as float)+(case when ltrim(rtrim(@i_column))='x' then 1 when ltrim(rtrim(@i_column))='y' then 0.5 else 0 end)
set @i=@i+1
end
以上代码update得不到值,改用exec后可以,WHY