CONVERT是非确定性的吗?

时间:2017-04-26 19:33:03

标签: sql-server non-deterministic sql-convert

我有下表:

CREATE TABLE Portfolio.DailyStats
(
Date date NOT NULL PRIMARY KEY,
NAV int NOT NULL,
SP500 decimal(8,4) NULL,
R2K decimal(8,4) NULL,
NetExp decimal(8,4) NULL,
GrossExp decimal(8,4) NULL,
[YrMn]  AS (CONVERT([varchar](7),[Date])),
)
GO

我想我可能需要在某个时刻建立一个索引视图,所以我想确保我的计算列[YrMn]是确定性的。我跑了这张支票:

Select COLUMNPROPERTY (OBJECT_ID('Portfolio.DailyStats'),'YrMn', 'IsDeterministic')

返回值0表示该列是非确定性的。我正在努力弄清楚为什么会出现这种情况,因为列值在特定日期总是相同的。它与转换函数有什么关系吗?

1 个答案:

答案 0 :(得分:1)

如果您包含convert()的第三个参数style,那么它就变得具有确定性。 e.g。

[YrMn]  AS (convert([varchar](7),[Date],120))

rextester演示:http://rextester.com/DFNA25042