use 數據庫goselect a.Name,b.* from sysobjects a,syscolumns b where a.ID=b.ID and b.Name='formula'--字段名formula
select * from sys.columns
select a.Name,b.* from sysobjects a,syscolumns b where a.ID=b.ID and b.Name='formula'对应的哪个字段是formula的内容?
要查的是字段定义的公式formula,不是一个名为formula的字段定义
SELECT * FROM syscomments s WHERE id=OBJECT_ID('表名')
--SS2005+ SELECT table_name = object_name(object_id),* FROM sys.computed_columns WHERE object_id = object_id('表名') --SS2000 SELECT table_name = object_name(id),* FROM syscomments WHERE id = object_id('表名')
是指計算列? CREATE TABLE T(ID int,ID2 int,ID3 AS ID*ID2) SELECT 'T' AS 表名,a.NAME AS 列名,b.text AS 公式 FROM syscolumns a,syscomments b WHERE a.ID=OBJECT_ID('T') AND a.ID=b.ID AND a.Colid=b.number
--SS2005+
SELECT table_name = object_name(object_id),*
FROM sys.computed_columns
WHERE object_id = object_id('表名')
--SS2000
SELECT table_name = object_name(id),*
FROM syscomments
WHERE id = object_id('表名')
也是syscomments,是否2008及以上,是从computed_columns查询?
CREATE TABLE T(ID int,ID2 int,ID3 AS ID*ID2)
SELECT 'T' AS 表名,a.NAME AS 列名,b.text AS 公式
FROM syscolumns a,syscomments b
WHERE a.ID=OBJECT_ID('T') AND a.ID=b.ID AND a.Colid=b.number
SS2005就有这个视图。SS2005还提供了syscomments兼容性视图。但这个的查询性能要比上边那个差10倍以上。