Как получить имена столбцов из запроса в SQL Server

Использование SQL Server. У меня очень обширный запрос, с aliasing и т. Д. Есть ли способ, используя только SQL (хранимый процесс – это хорошо, но не php и т. Д.), Чтобы получить список всех имен столбцов из этого запроса? (Я понимаю, что мне нужно будет встроить мой запрос внутри этого решения, но это нормально. Просто временная мера.)

Благодаря!

Если вы используете SQL Server 2012 или более позднюю версию, вы можете использовать sys.dm_exec_describe_first_result_set

SELECT name FROM sys.dm_exec_describe_first_result_set ('Your Query Here', NULL, 0) ; 

DEMO

Это слишком долго для комментария.

Существуют различные способы вывода столбцов из запроса, например:

 select top 0 s.* from (<your query here>) s; 

Затем вы можете проанализировать результаты.

Однако я нашел другой подход полезным. Создайте представление или таблицу, используя ту же логику:

 select top 0 s.* into _TempTableForColumns from (<your query here>) s; 

Затем используйте information_schema (или системные таблицы, если хотите):

 select * from information_schema.columns where table_name = '_TempTableForColumns' and schema_name = 'dbo'; drop table _TempTableForColumns; 

Преимущество этого подхода заключается в том, что вы можете получить информацию о типе вместе с именами столбцов. Но движок все еще должен выполнить запрос, и это может занять некоторое время, даже если никакие строки не возвращаются. Хотя имена столбцов и типы доступны после компиляции, я не знаю, как их получить, не выполняя также запрос.

После SQL Server 2008

 select * from sys.columns c inner join sys.objects o on c.object_id = o.object_id where o.name = 'TableName' 

До

 select * from syscolumns c inner join sysobjects o on c.id = o.id where o.name = 'TableName' 
Interesting Posts

Entity Framework MVC Медленная загрузка страниц

Автоматически отменяет ли SQL-сервер изменения в отключенном соединении?

SQL: для поиска значений в таблице без символа '@'

Как разбить / запустить большой SQL-запрос?

LINQ UNPIVOT Несколько столбцов

Разделите одну длинную строку запятой на новую таблицу с несколькими столбцами

Как поддерживать разрывы строк в sql-сервере

Ошибка SSIS: внешняя колонка для источника не синхронизирована с столбцами источника данных; Как удалить внешние столбцы?

создать виртуальный указатель – только для плана

Удаление SQL-сервера SQL Server не работает

Как я могу спросить SQL-сервер, есть ли у меня разрешения на что-то? (вставка, обновление и т. д.)

Как найти максимальные записи для заданного диапазона

Как вернуть одну строку из группы несколькими столбцами

Почему я теряю две десятичные точки в этом литом выражении?

SQL определяет, прошло ли несколько последовательных месяцев

Давайте будем гением компьютера.