如果 SQL 表中不存在列,则为默认值



我有下面的示例代码。假设我不知道表中是否存在特定列,如果表中不存在该列,我如何以可以将列值默认为"不可用"的方式编写查询?

示例

select COL1, COL2,
CASE
WHEN OBJECT_ID('COL3') IS NULL THEN 'Not Available'
ELSE COL3
END AS COL3
from TABLE1

提前谢谢。

这很难做到(没有动态SQL(,但是有一种方法可以在SQL中使用范围规则。 您可以执行此操作,假设您在表中具有唯一键或主键:

select t1.col1, t1.col2,
(select col3                               -- no alias!
from table1 tt1
where tt1.id = t1.id                      -- the primary/unique key
) col3 
from table1 t1 cross join
(values ('Not Available')) v(col3)           -- same name

子查询将从子查询中的table1中获取col3(如果存在(。 否则,它将联系并从values()条款中找到col3

最新更新