EdG*_*man 5 sql exists conditional-statements
我是否可以以某种方式选择视图中存在的列,但如果不存在则忽略该列?
SELECT
CASE
WHEN EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'MyView' AND COLUMN_NAME = 'MyColumn')
THEN MyView.MyColumn
ELSE NULL
END AS [Sometimes]
FROM
MyView
Run Code Online (Sandbox Code Playgroud)
现在,它会返回“Msg 207 无效的列名”错误。
也许可以选择忽略该错误?
您可以使用动态 SQL来做到这一点:
declare @sql varchar(200)
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'MyView' AND COLUMN_NAME = 'MyColumn')
BEGIN
select @sql = "SELECT Column1 AS TheColumn1, MyColumn from MyView"
END
ELSE
BEGIN
select @sql = "SELECT Column1 AS TheColumn1, null AS MyColumn from MyView"
END
-- executes dynamic sql
EXEC @sql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5082 次 |
| 最近记录: |