Seleccionar columnas de una vista


Estoy intentando seleccionar los nombres de columna de un view de una manera similar a la selección de information_schema.columns.

Parece que no puedo encontrar una manera de hacer esto. ¿Alguien más ha hecho esto antes o sabe si es posible?

Author: gotqn, 2012-06-30

4 answers

Information_schema.columna.Table_name (al menos bajo Sql Server 2000) incluye vistas, así que solo use

SELECT * FROM information_schema.columns WHERE table_name = 'VIEW_NAME'
 49
Author: Ghost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-29 20:19:57

Prueba esto:

SELECT *
FROM sys.views

Esto le da las vistas como tales-si necesita las columnas, use esto:

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

No estoy seguro de cómo puede hacerlo usando INFORMATION_SCHEMA - nunca uso eso, ya que se siente bastante "torpe" y poco intuitivo, en comparación con las vistas de catálogo de esquemas sys.

Vea los documentos MSDN en las Vistas de catálogo para todos los detalles de todas las vistas disponibles, y qué información podrían contener.

 12
Author: marc_s,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-29 20:18:33

Las vistas INFORMATION_SCHEMA contienen metadatos sobre los objetos dentro de la base de datos. INFORMATION_SCHEMA.COLUMNS utiliza tablas de sys subyacentes para recuperar los metadatos (compruebe sp_helptext 'master.Information_schema.columna' ). Puede utilizar esta consulta más sencilla para seleccionar los nombres de columna utilizados en cualquier vista.

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>'
 1
Author: prabhat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-25 04:34:55
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
 0
Author: Howard Rothenburg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-15 17:54:33