sql判断表中是否存在某列,以实现动态增加列

来源:互联网 发布:盘古网络博物馆 编辑:程序博客网 时间:2024/06/05 20:35

if exists(select 1 from syscolumns where name = '列名' and id = object_id('表名'))
...  

实际项目例子:

if not exists(select 1 from dbo.syscolumns    where name=@addedColumnName and ID=object_id(@tableName))
begin
        
    set @cmd='ALTER TABLE '+@tableName+' ADD '+@addedColumnName + ' ' + @dataType  + ' not null default 0'
    print (@cmd)
    exec  (@cmd)
   
    if(@addedColumnName != @sourceColumnName)
     begin
         set @cmd='IF EXISTS ( SELECT c.name FROM dbo.syscolumns c , dbo.sysobjects o' + CHAR(13) + CHAR(10)
                 +' WHERE c.id=o.id AND o.name='+''''+@tableName+''''+' AND c.name='+''''+@sourceColumnName+''''+ ')'+CHAR(13) + CHAR(10)
         set @cmd=@cmd+'Update ' +@tableName+' Set ' +  @addedColumnName  + '=' + @sourceColumnName
         print @cmd
         exec(@cmd)   
     end

end