比如:想知道表LBM_INFO中是否有字段REMOTE_TIMEOUT,如果没有,就在LBM_INFO表中创建该字段。sql

解决方案 »

  1.   


    --比如说要判断表A中的字段C是否存在两个方法:  
    --一,  
    IF EXISTS (  
     SELECT 1 FROM SYSOBJECTS T1  
      INNER JOIN SYSCOLUMNS T2 ON T1.ID=T2.ID  
     WHERE T1.NAME='A' AND T2.NAME='C'  
     )  
     PRINT '存在'  
      ELSE  
     PRINT '不存在'  
       
    --二, 短小精悍,可谓精典  
    IF COL_LENGTH('A', 'C') IS NOT NULL  
        PRINT N'存在'  
    ELSE  
        PRINT N'不存在'  
      
    <p></p>方法一:   
    select   *   from   syscolumns   where   id=object_id('表名')   and   name='列名'  
    说明:存在则返回此列的一条说明记录,不存在返回空;  
      
    方法二:  
    select   count(*)   from   sysobjects   a,syscolumns   b  where a.id=b.id  and  b.name='flag1'  and a.type='u'   and   a.name='T_Pro_ProductClass'  
    说明:存在返回1,不存在则返回0  
      

  2.   

    select * from syscolumns where id=object_id('表名') and name='列名'
      

  3.   


    if not exists (select * from syscolumns where id=object_id('表名') and name='列名')
      alter table '表名' add '列名' '类型' 
      

  4.   

    if exists(select 1 from syscolumns where name='REMOTE_TIMEOUT' and id=(select id from sysobjects where xtype='u' and name='LBM_INFO'))
     alter table LBM_INFO add REMOTE_TIMEOUT varchar(20) default 'values'
    else
     --该表有该字段
      

  5.   


    if not exists(select 1
                  from sys.columns a 
                  inner join sys.tables b on a.object_id=b.object_id
                  where b.name='LBM_INFO' and a.name='REMOTE_TIMEOUT')
      alter table LBM_INFO add REMOTE_TIMEOUT [数据类型]