admin

不存在的列不应破坏select中的sql查询

sql

就我而言,有不同的数据库版本(SQL
Server)。例如,我的表orders确实htmltext在版本A中有该列,但是在版本B中该列htmltext丢失了。

Select [order_id], [order_date], [htmltext] from orders

我有一个巨大的(非常巨大的声明)htmltext,如果存在的话,访问该列是必需的。

我知道,我可以在if exists两个begin + end方面做一个条件。但这将是非常丑陋的,因为我的庞大查询在整个SQL脚本(包含许多庞大的语句)中将是两倍。

是否有可能选择该列-但是如果该列不存在,它仍将被忽略(或设置为“ null”)而不是抛出错误(类似于isull()函数)?

谢谢!


阅读 139

收藏
2021-06-07

共1个答案

admin

在两个版本中创建一个视图。

在存在htmltext列的版本中,将其创建为

Create view vw_Table1 
AS
select * from <your Table>

在htmlText不存在的版本中,将其创建为

Create view vw_Table1 
AS
select *,NULL as htmlText from <your Table>

现在,在您的应用程序代码中,您可以安全地使用此视图而不是表本身,并且它的行为完全符合您的要求。

2021-06-07