各位大虾我的问题是这样的,
    我有一个表,是通过DTS导入excel得到的,每次都会有几列null列(f116,f117,..,130),我想用一个循环自动删除这些null列,我的想法是
Create Function a()
as
begin
declare @a int
set @a=117
alter table temp_posinfo_update drop column f+@a
@a++
end
go通过循环自动删除这些null列,但是f+@a这里有错误,请大家指点一二不胜感激~~

解决方案 »

  1.   

    declare @cmd varchar(100)
    set @cmd='alter table tb drop column f' + rtrim(@a)EXEC(@cmd);
      

  2.   

    declare @cmd varchar(100)
    declare @a int
    set @a=117
    while @a<18
    begin
    set @cmd='alter table tb drop column f' + rtrim(@a)
    set @a=@a+1
     exec(@cmd)
    end
     
      

  3.   

    create table lin_tb(id varchar(100),f17 int,f18 int)
    select * from lin_tb
    go
    create proc lin_proc
    as
    begin
    declare @i int,@sql varchar(1000)
    set @sql=''
    set @i=17
    while @i<19 
    begin
       set @sql='alter table lin_tb drop column f'+cast(@i as varchar(10))
       exec (@sql)
       set @i=@i+1
    end
    end
    go
    exec lin_proc
    go
    select * from lin_tb
    go
    drop table lin_tb
    drop proc lin_proc
    /*
    id                                                                                                   f17         f18
    ---------------------------------------------------------------------------------------------------- ----------- -----------(0 行受影响)id
    ----------------------------------------------------------------------------------------------------(0 行受影响)*/