日期:2014-05-18 浏览次数:20795 次
--> 测试数据: TB
if object_id('TB') is not null drop table TB
GO
create table TB (ID int,colum int,[1] varchar(1),[2] varchar(1),[3] varchar(1))
insert into TB
select 1,3,'A','A','A' union all
select 1,1,'A','A','A' union all
select 1,2,'A','A','A' union all
select 1,1,'A','A','A'
DECLARE @S VARCHAR(1000),@COL INT
SELECT @S=ISNULL(@S,'')+'
UPDATE TB
SET ['+LTRIM([COLUM])+']=''C'' WHERE COLUM='+LTRIM([COLUM])+';' FROM TB
--PRINT @S
EXEC(@S)
select * from TB
ID colum 1 2 3
----------- ----------- ---- ---- ----
1 3 A A C
1 1 C A A
1 2 A C A
1 1 C A A
(4 行受影响)
------解决方案--------------------
/*创建临时表*/ create table test ( ID int, [column] int, [1] nvarchar(1), [2] nvarchar(1), [3] nvarchar(1), ) /*创建示例数据*/ insert into test(ID,[column],[1],[2],[3]) values(1,3,'A','A','A') insert into test(ID,[column],[1],[2],[3]) values(1,1,'A','A','A') insert into test(ID,[column],[1],[2],[3]) values(1,2,'A','A','A') insert into test(ID,[column],[1],[2],[3]) values(1,1,'A','A','A') /*执行更新*/ update test set [1]=case when [column]=1 then 'C' else 'A' end,[2]=case when [column]=2 then 'C' else 'A' end,[3]=case when [column]=3 then 'C' else 'A' end select * from test /*查询更新结果*/ ID column 1 2 3 1 3 A A C 1 1 C A A 1 2 A C A 1 1 C A A
------解决方案--------------------
update TB set [1]= case when colum=1 then 'C' else [1] end,
[2]=case when colum=2 then 'C' else [2] end,
[3]=case when colum=3 then 'C' else [3] end