我想執行一個SELECT,它只在該列存在的情況下選擇列值,否則顯示爲空。SQL Server如何只選擇一列存在於表中
這是目前我在做什麼:
SELECT TOP 10 CASE WHEN EXISTS
(SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA ='test' and TABLE_NAME='tableName' and COLUMN_NAME='columnName')
THEN columnName ELSE NULL END AS columnName
我也試過這樣:
SELECT TOP 10 CASE WHEN
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA ='test' and TABLE_NAME='tableName' and COLUMN_NAME='columnName') >0
THEN columnName ELSE NULL END AS columnName
他們都工作得很好,如果列表中存在。但是,當該列是不存在的,它給我的錯誤:
無效列名 '列名'
您需要使用動態SQL。對於任何特定的查詢,它將訪問的表和列是固定的,並且如果查詢不能編譯,查詢甚至不會開始執行和檢索數據(在你的嘗試中需要這些數據)。 – 2014-10-07 07:14:25