Select Columns of a View

后端 未结 5 1690
我寻月下人不归
我寻月下人不归 2021-02-11 17:11

I\'m attempting to select the column names of a view in a similar way as selecting from information_schema.columns.

I can\'t seem to find a wa

相关标签:
5条回答
  • 2021-02-11 17:18

    I found this way working for views (SQL 2017). I was not able to get data from information_schema.columns and sys.columns:

        SELECT * FROM sys.all_columns WHERE object_id = OBJECT_ID('<view_name>')
    
    0 讨论(0)
  • 2021-02-11 17:19

    INFORMATION_SCHEMA views holds metadata about objects within database. INFORMATION_SCHEMA.COLUMNS uses underlying sys tables to retrive the metadata ( check sp_helptext 'master.Information_schema.columns' ). You can use this simpler query to select column names used in any view.

    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>'
    
    0 讨论(0)
  • information_schema.columns.Table_name (at least under Sql Server 2000) includes views, so just use

    SELECT * FROM information_schema.columns WHERE table_name = 'VIEW_NAME'
    
    0 讨论(0)
  • 2021-02-11 17:40
    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 讨论(0)
  • 2021-02-11 17:45

    Try this:

    SELECT *
    FROM sys.views
    

    This gives you the views as such - if you need the columns, use this:

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

    Not sure how you can do it using the INFORMATION_SCHEMA - I never use that, since it feels rather "clunky" and unintuitive, compared to the sys schema catalog views.

    See the MSDN docs on the Catalog Views for all the details of all the views available, and what information they might contain.

    0 讨论(0)
提交回复
热议问题