就我而言,有不同的数据库版本(SQL Server)。例如,我的表orders确实htmltext在版本A中有该列,但是在版本B中该列htmltext丢失了。
orders
htmltext
Select [order_id], [order_date], [htmltext] from orders
我有一个巨大的(非常巨大的声明)htmltext,如果存在的话,访问该列是必需的。
我知道,我可以在if exists两个begin + end方面做一个条件。但这将是非常丑陋的,因为我的庞大查询在整个SQL脚本(包含许多庞大的语句)中将是两倍。
if exists
begin + end
是否有可能选择该列-但是如果该列不存在,它仍将被忽略(或设置为“ null”)而不是抛出错误(类似于isull()函数)?
谢谢!
在两个版本中创建一个视图。
在存在htmltext列的版本中,将其创建为
Create view vw_Table1 AS select * from <your Table>
在htmlText不存在的版本中,将其创建为
Create view vw_Table1 AS select *,NULL as htmlText from <your Table>
现在,在您的应用程序代码中,您可以安全地使用此视图而不是表本身,并且它的行为完全符合您的要求。