表名 TB001,结构如下
xm,col1,col2,col3,col4,col5....col50
表有50列,每列是以col加数字来表示的,现在想在查询分析器写一个循环,用update来列新每一列的数据,把每列
的数据中,为NULL值是,赋值为0
update TB001 Set COl1=0 Where COl1 Is Null
上面的语句一次性只能执行一句,可不可以写一个循环,一次性把50列都更新一下?
求教了。。
------解决方案--------------------
用一个字符串循环吧
DECLARE @sqlstr varchar(8000),@js int,@Colinx varchar(2)
select @sqlstr='',@js=1
WHILE @js<=50
begin
set @Colinx=CAST(@js as varchar(2))
set @sqlstr=@sqlstr+'col'+@Colinx+'=case when col'+@Colinx+' is null then 0 Else col'+@Colinx+' End,'
set @js=@js+1
end
set @sqlstr=' update TB001 set '+LEFT(@sqlstr,LEN(@sqlstr)-1)
Exec (@sqlstr)
------解决方案--------------------
declare @i int
set @i=1
declare @sql varchar(1000)
while @i<=50
begin
set @sql='update TB001 Set COl'+cast(@i as varchar)+'=0 Where COl'+cast(@i as varchar)+' Is Null'
exec(@sql)
set @i=@i+1
end