Я пытаюсь выбрать имена столбцов view
аналогично выбору из information_schema.columns
.
Я не могу найти способ сделать это. Кто-нибудь еще сделал это раньше или знал, возможно ли это?
Я пытаюсь выбрать имена столбцов view
аналогично выбору из information_schema.columns
.
Я не могу найти способ сделать это. Кто-нибудь еще сделал это раньше или знал, возможно ли это?
information_schema.columns.Table_name (по крайней мере, под Sql Server 2000) включает в себя виды, поэтому просто используйте
SELECT * FROM information_schema.columns WHERE table_name = 'VIEW_NAME'
Попробуйте следующее:
SELECT *
FROM sys.views
Это дает вам представление как таковое - если вам нужны столбцы, используйте это:
SELECT *
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.YourViewNameHere')
Не уверен, как вы можете это сделать, используя INFORMATION_SCHEMA
- я никогда не использую это, поскольку он чувствует себя довольно "неуклюжим" и неинтуитивным, по сравнению с представлениями каталога схемы sys
.
Обратитесь к документам MSDN в представлениях каталога для получения всех подробностей всех доступных представлений и какой информации они могут содержать.
SELECT distinct VIEW_NAME
,TABLE_SCHEMA
,TABLE_NAME
,COLUMN_NAME
FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE
--WHERE TABLE_SCHEMA = 'Person'
ORDER BY
VIEW_NAME
,TABLE_SCHEMA
,TABLE_NAME
,COLUMN_NAME
Представления INFORMATION_SCHEMA содержат метаданные об объектах в базе данных. INFORMATION_SCHEMA.COLUMNS использует базовые таблицы sys для извлечения метаданных (проверьте sp_helptext 'master.Information_schema.columns'). Вы можете использовать этот более простой запрос для выбора имен столбцов, используемых в любом представлении.
SELECT col.name
FROM <db_name>.sys.columns col, <db_name>.sys.views vew
WHERE col.object_id = vew.object_id
AND vew.name = '<view_name>'
Я нашел этот способ работы для представлений (SQL 2017). Я не смог получить данные из information_schema.columns
и sys.columns
:
SELECT * FROM sys.all_columns WHERE object_id = OBJECT_ID('<view_name>')