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

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

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

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

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

谢谢!

最佳答案

在两个版本中创建一个 View 。

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

Create view vw_Table1
AS
select * from <your Table>

在htmlText不存在的版本中,将其创建为
Create view vw_Table1
AS
select *,NULL as htmlText from <your Table>

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

关于sql - 不存在的列不应破坏select中的sql查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17358983/

10-11 20:42