使用查询访问SQL中的列描述

时间:2013-03-01 15:44:01

标签: sql sql-server

我正在尝试使用INFORMATION_SCHEMA

访问列描述属性

我过去创建了此查询以获取列名称,但我无法弄清楚如何获取列的描述

SELECT COLUMN_NAME AS Output, ORDINAL_POSITION 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE  (TABLE_NAME = @Tablename) AND (ORDINAL_POSITION = @Location)

 Screen shot

这是描述在字段属性

上的位置

5 个答案:

答案 0 :(得分:60)

如果通过'描述'你是说'描述'在设计模式下以SQL Management Studio显示,这里是:

    select 
        st.name [Table],
        sc.name [Column],
        sep.value [Description]
    from sys.tables st
    inner join sys.columns sc on st.object_id = sc.object_id
    left join sys.extended_properties sep on st.object_id = sep.major_id
                                         and sc.column_id = sep.minor_id
                                         and sep.name = 'MS_Description'
    where st.name = @TableName
    and sc.name = @ColumnName

答案 1 :(得分:6)

如果您特别想使用INFORMATION_SCHEMA(就像我一样),那么以下查询应该可以帮助您获取列的描述字段:

GNU parallel: Argument list too long

答案 2 :(得分:3)

fn_listextendedproperty系统功能将执行您正在寻找的内容。

它也被称为sys.fn_listextendedproperty

语法如下:

fn_listextendedproperty ( 
  { default | 'property_name' | NULL } 
, { default | 'level0_object_type' | NULL } 
, { default | 'level0_object_name' | NULL } 
, { default | 'level1_object_type' | NULL } 
, { default | 'level1_object_name' | NULL } 
, { default | 'level2_object_type' | NULL } 
, { default | 'level2_object_name' | NULL } 
)

示例用法:列出ScrapReason架构中Production表的所有列的扩展属性

USE AdventureWorks2012;
GO
SELECT objtype, objname, name, value
FROM fn_listextendedproperty (NULL, 'schema', 'Production', 'table', 'ScrapReason', 'column', NULL);
GO

sp_helptext无法使用,因为它不能按照TechNet用于表格。

  

显示用户定义规则的定义,默认为未加密   Transact-SQL存储过程,用户定义的Transact-SQL函数,   触发器,计算列,CHECK约束,视图或系统对象   例如系统存储过程。

sp_columns不会返回您正在寻找的sys.extended_properties.value字段。

fn_listextendedproperty可以说更容易使用,并且比接受的答案中的查询更通用。

答案 3 :(得分:1)

exec sp_columns @Tablename ...这是系统存储过程,它将为您提供信息。

除此之外,这里有一篇关于信息模式视图的大量信息:What is the equivalent of 'describe table' in SQL Server?

答案 4 :(得分:0)

您是否在sys.extended_properties视图中查找信息?

https://stackoverflow.com/a/15008885/1948904