是否有任何的你知道如何在SQL Server数据库表中的计算列的名单?
我发现sys.sp_help表名不返回该信息,但只有在secord结果集。
我试图找出是否有这样做的更好的方法。 一些东西,只返回一个结果集。
任何帮助是非常赞赏,因为这是非常糟糕记录。
谢谢你,Giammarco
是否有任何的你知道如何在SQL Server数据库表中的计算列的名单?
我发现sys.sp_help表名不返回该信息,但只有在secord结果集。
我试图找出是否有这样做的更好的方法。 一些东西,只返回一个结果集。
任何帮助是非常赞赏,因为这是非常糟糕记录。
谢谢你,Giammarco
当然-检查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和起来的。
UPDATE:甚至还有一个sys.computed_columns
其中还包含计算列的定义(表达)系统目录视图-只是,可能需要一段时间的情况下:-)
SELECT * FROM sys.computed_columns
WHERE object_id = OBJECT_ID('YourTableName')
渣
如果你想使用INFORMATION_SCHEMA
的意见,然后再尝试
SELECT
COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+'.'+TABLE_NAME),COLUMN_NAME,'IsComputed')
AS IS_COMPUTED,
*
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='<Insert Your Table Name Here>'
对于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)
如果你有一个计算列很多的表,并希望看到表名称以及:
SELECT sys.objects.name, sys.computed_columns.name
from sys.computed_columns
inner join sys.objects on sys.objects.object_id = sys.computed_columns.object_id
order by sys.objects.name