Я хотел бы выполнить SELECT, где он выбирает значение столбца, только если этот столбец существует в таблице, иначе отобразите null.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
Оба они работают хорошо, если столбец присутствует в таблице. Но когда колонна нет, он дает мне ошибку:
Неверное имя столбца 'ColumnName'
Вам понадобится динамический SQL. Для любого конкретного запроса таблицы и столбцы, к которым он будет обращаться, фиксируются, и запрос даже не начнет выполнять и извлекать данные (которые ему понадобятся при попытках), если он не может скомпилировать. –