我试图用使用查询来访问列描述SQL
我已经在过去创造了这个查询的INFORMATION_SCHEMA来获取列名访问列描述属性,但我无法弄清楚如何获得列的描述
SELECT COLUMN_NAME AS Output, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_NAME = @Tablename) AND (ORDINAL_POSITION = @Location)
这就是说明是关于字段属性
我试图用使用查询来访问列描述SQL
我已经在过去创造了这个查询的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
将ORDINAL_POSITION链接到此的最佳方式是什么? (最好是直接在查询中使用它,还是应该使用查找示例中找到的COLUMN_NAME,我首先发布该查询以查找描述?)非常感谢 – 2013-03-02 17:23:45
我相信INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION和sys.columns.column_id是一样的,所以你应该可以直接在查询sys.extended_properties时使用它(作为minor_id) – Incidently 2013-03-02 23:13:32
我经常使用这个VARANT类型支持的错误。 :(并且连接之后就下降了。mssql2012 – Ben 2018-01-05 12:30:52
exec sp_columns @Tablename ...这是系统存储过程,将给你的信息。
除此之外,这里是与信息架构视图很多很好的信息后:What is the equivalent of 'describe table' in SQL Server?
您是否正在寻找在sys.extended_properties视图中的信息?
的fn_listextendedproperty
系统功能会做你要找什么for(在MSDN上称为SQL Server 2012的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
可以说比被接受的答案中的查询更容易处理并且更通用。
如果你特别想使用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
为什么downvote? – 2017-06-12 11:54:02
感谢,正是我所需要的。不知道为什么会被低估。 – Rob 2018-01-22 11:34:27
你也可以做sp_helptext在yourtablename – DevelopmentIsMyPassion 2013-03-01 15:46:31
你是什么意思的描述?你在哪里看到这个? – RBarryYoung 2013-03-01 16:27:15