Как получить имена столбцов из запроса в 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'