Выберите столбцы вида

Я пытаюсь выбрать имена столбцов view аналогично выбору из information_schema.columns.

Я не могу найти способ сделать это. Кто-нибудь еще сделал это раньше или знал, возможно ли это?

Ответ 1

information_schema.columns.Table_name (по крайней мере, под Sql Server 2000) включает в себя виды, поэтому просто используйте

SELECT * FROM information_schema.columns WHERE table_name = 'VIEW_NAME'

Ответ 2

Попробуйте следующее:

SELECT *
FROM sys.views

Это дает вам представление как таковое - если вам нужны столбцы, используйте это:

SELECT * 
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.YourViewNameHere')

Не уверен, как вы можете это сделать, используя INFORMATION_SCHEMA - я никогда не использую это, поскольку он чувствует себя довольно "неуклюжим" и неинтуитивным, по сравнению с представлениями каталога схемы sys.

Обратитесь к документам MSDN в представлениях каталога для получения всех подробностей всех доступных представлений и какой информации они могут содержать.

Ответ 3

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

Ответ 4

Представления 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>'

Ответ 5

Я нашел этот способ работы для представлений (SQL 2017). Я не смог получить данные из information_schema.columns и sys.columns:

    SELECT * FROM sys.all_columns WHERE object_id = OBJECT_ID('<view_name>')