如题,看到判断列的语句是
if exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') t.aircraftdesc else null
但是貌似不能直接写在select后面,应该怎么写呢

解决方案 »

  1.   

    if exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') 
    select aircraftdesc from temporary
    else
    select null
      

  2.   

    if exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') 
        select aircraftdesc from temporary
    else
        select '无表或无列'
      

  3.   

    原来创建的表的列都有存在syscolumns 里了?
      

  4.   

    select case when exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc')  
    then aircraftdesc else null end from temporary
    ??
      

  5.   

    SELECT CASE WHEN exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc')  THEN t.aircraftdesc else null END FROM TB
      

  6.   

    declare @sql varchar(8000)
    select
      @sql='select 其他列'
      +case when exists(select * 
                        from syscolumns 
                        where id=object_id('temporary') 
                        and name='aircraftdesc') 
               then ',t.aircraftdesc' 
             else '' 
       end
      +' from temporary'
    exec(@sql)
     
      

  7.   


    sepect case when exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') then t.aircraftdesc else null end
      

  8.   

    似乎有问题
    Msg 207, Level 16, State 1, Line 18
    Invalid column name 'aircraftdesc'.
      

  9.   

    需求不合理
    或者你的表述有问题
    不知道你是不是想查询某些列,如果,存在则取该列,不存在,则不取如果是这样,就用动态语句
    declare @sql varchar(4000)
    set @sql='select '
    if exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') 
    set @sql=@sql+' aircraftdesc from tb'
    else 
    set @sql=@sql+' null from tb'exec(@sql)  
      

  10.   

    我是要存在该列,取数据,不存在则全部置null
    如果不用动态sql的话,还有办法没?