如题,看到判断列的语句是
if exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') t.aircraftdesc else null
但是貌似不能直接写在select后面,应该怎么写呢
if exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') t.aircraftdesc else null
但是貌似不能直接写在select后面,应该怎么写呢
select aircraftdesc from temporary
else
select null
select aircraftdesc from temporary
else
select '无表或无列'
then aircraftdesc else null end from temporary
??
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)
sepect case when exists(select * from syscolumns where id=object_id('temporary') and name='aircraftdesc') then t.aircraftdesc else null end
Msg 207, Level 16, State 1, Line 18
Invalid column name 'aircraftdesc'.
或者你的表述有问题
不知道你是不是想查询某些列,如果,存在则取该列,不存在,则不取如果是这样,就用动态语句
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)
如果不用动态sql的话,还有办法没?