我正在尝试使用 INFORMATION_SCHEMA 访问列描述属性
我过去创建了这个查询来获取列名,但我不知道如何获取列的描述
SELECT COLUMN_NAME AS Output, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_NAME = @Tablename) AND (ORDINAL_POSITION = @Location)
这是描述在字段属性上的位置
我正在尝试使用 INFORMATION_SCHEMA 访问列描述属性
我过去创建了这个查询来获取列名,但我不知道如何获取列的描述
SELECT COLUMN_NAME AS Output, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_NAME = @Tablename) AND (ORDINAL_POSITION = @Location)
这是描述在字段属性上的位置
如果“描述”是指在设计模式下在 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
如果您特别想使用 INFORMATION_SCHEMA (就像我一样),那么以下查询应该可以帮助您获取列的描述字段:
SELECT COLUMN_NAME AS [Output]
,ORDINAL_POSITION
,prop.value AS [COLUMN_DESCRIPTION]
FROM INFORMATION_SCHEMA.TABLES AS tbl
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS col ON col.TABLE_NAME = tbl.TABLE_NAME
INNER JOIN sys.columns AS sc ON sc.object_id = object_id(tbl.table_schema + '.' + tbl.table_name)
AND sc.NAME = col.COLUMN_NAME
LEFT JOIN sys.extended_properties prop ON prop.major_id = sc.object_id
AND prop.minor_id = sc.column_id
AND prop.NAME = 'MS_Description'
WHERE tbl.TABLE_NAME = @TableName
系统功能将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
可以说比接受答案中的查询更容易使用和更通用。
exec sp_columns @Tablename... 这是系统存储过程,将为您提供信息。
除此之外,这里有一篇关于 INFORMATION SCHEMA 视图的大量有用信息的帖子:SQL Server 中“描述表”的等价物是什么?
您是否在 sys.extended_properties 视图中查找信息?