我正在尝试使用INFORMATION_SCHEMA
访问列描述属性我过去创建了此查询以获取列名称,但我无法弄清楚如何获取列的描述
SELECT COLUMN_NAME AS Output, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_NAME = @Tablename) AND (ORDINAL_POSITION = @Location)
这是描述在字段属性
上的位置答案 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视图中查找信息?