就我而言,有不同的数据库版本(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/