我想从数据库中查询计算列的定义,但找不到似乎做我想要的命令...
例如,如果列定义为:
CallDT AS (CONVERT([datetime],dateadd(second,[StartDate],'01/01/1970'),(0)))
在DDL中,我想在数据库上运行一个命令来检索“AS”语句,这样我就可以将它与预期值进行比较。 (我正在开发一个SQL解析器,它将现有数据库与DDL定义进行比较)...
这可能吗?
答案 0 :(得分:18)
这适用于SQL Server 2008
create table dbo.Foo
(
StartDate int,
CallDT AS (CONVERT([datetime],dateadd(second,[StartDate],'01/01/1970'),(0)))
)
select definition
from sys.computed_columns
where name='CallDT' and object_id=object_id('dbo.Foo')
答案 1 :(得分:7)
试试这个:
SELECT
name, definition
FROM
sys.computed_columns
应该在SQL Server 2005及更高版本中运行。