我試圖用使用查詢來訪問列描述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