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

17 浏览
0 Comments

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

我正在尝试使用INFORMATION_SCHEMA来访问列描述属性。

我以前创建过这个查询来获取列名,但是我无法弄清楚如何获取列的描述。

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

这是字段属性中描述的位置。

 截图

0
0 Comments

在SQL中,使用查询来访问列的描述是一个常见的需求。有时候,我们需要获得某个表中列的描述信息,以便于更好地理解和使用数据库。然而,SQL Server中并没有直接提供访问列描述的方法,这就需要我们使用一些系统函数来实现。

其中一个可以实现这个需求的系统函数是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 }

)

我们可以通过传递相应的参数来获取列的描述信息。例如,下面的示例代码可以列出Production模式中ScrapReason表的所有列的扩展属性:

USE AdventureWorks2012;

GO

SELECT objtype, objname, name, value

FROM fn_listextendedproperty (NULL, 'schema', 'Production', 'table', 'ScrapReason', 'column', NULL);

GO

使用sp_helptext函数是无法实现这个需求的,因为它不能用于表。而sp_columns函数也不能返回我们所需要的sys.extended_properties.value字段。

因此,fn_listextendedproperty函数被认为是更易于使用和更通用的方法来访问列描述。我们可以根据需要来使用这个函数,以便更好地理解和使用数据库中的列。

0
0 Comments

问题的出现原因:用户想要使用 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 = 

感谢,正是我需要的。不确定为什么会有人给出负面评价。

0
0 Comments

在使用SQL时,有时我们需要访问列的描述信息。以下是一个查询示例,可以获取SQL管理工具中设计模式下显示的列描述信息:

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 = 
and sc.name = 

那么,如何将ORDINAL_POSITION与此关联起来呢?在查询sys.extended_properties时,可以直接使用INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION(与sys.columns.column_id相同)作为minor_id。

然而,有用户反馈在使用mssql2012时遇到了VARANT类型不支持的错误,并且连接在此之后也中断了。

针对这个问题,需要进行进一步的排查和调试,以确定具体的原因和解决方法。

0