当前位置:  开发笔记 > 数据库 > 正文

获取数据库表中的计算列列表(SQL Server)

如何解决《获取数据库表中的计算列列表(SQLServer)》经验,为你挑选了3个好方法。

你们中的任何人都知道如何获取SQL Server数据库表中的计算列列表吗?

我发现sys.sp_help tablename确实返回了这个信息,但仅在secord结果集中.

我试图找出是否有更好的方法来做到这一点.只返回单个结果集的东西.

非常感谢任何帮助,因为这是非常糟糕的文件.

谢谢你,Giammarco



1> marc_s..:

当然 - 检查sys.columns系统目录视图:

SELECT *
FROM sys.columns
WHERE is_computed = 1

这将为您提供此数据库中的所有计算列.

如果您只想要一个表,请使用此查询:

SELECT *
FROM sys.columns
WHERE is_computed = 1
AND object_id = OBJECT_ID('YourTableName')

这适用于SQL Server 2005及更高版本.

更新:甚至还有一个sys.computed_columns系统目录视图,它还包含计算列的定义(表达式) - 以防可能需要一段时间:-)

SELECT *
FROM sys.computed_columns
WHERE object_id = OBJECT_ID('YourTableName')



2> Dave Poole..:

如果要使用INFORMATION_SCHEMA视图,请尝试

SELECT 
COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME),COLUMN_NAME,'IsComputed') 
    AS IS_COMPUTED,
*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME=''



3> Ian Boyd..:

对于SQL Server 2000,语法是:

SELECT * FROM sys.columns
WHERE is_computed = 1

而且稍微有用:

SELECT 
    sysobjects.name AS TableName, 
    syscolumns.name AS ColumnName
FROM syscolumns
    INNER JOIN sysobjects
    ON syscolumns.id = sysobjects.id
    AND sysobjects.xtype = 'U' --User Tables
WHERE syscolumns.iscomputed = 1

样本输出:

TableName              ColumnName
=====================  ==========
BrinksShipmentDetails  Total
AdjustmentDetails      Total
SoftCountDropDetails   Total
CloserDetails          Total
OpenerDetails          Total
TransferDetails        Total

(6 row(s) affected)

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有