CONVERT 是不确定的吗?
Is CONVERT non-deterministic?
我有以下 table:
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,表示该列是不确定的。考虑到特定日期的列值始终相同,我正在努力弄清楚为什么会出现这种情况。跟convert函数有什么关系吗?
如果包含 convert()
的第三个参数,style
,它就变得确定了。例如
[YrMn] AS (convert([varchar](7),[Date],120))
rextester 演示:http://rextester.com/DFNA25042
我有以下 table:
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,表示该列是不确定的。考虑到特定日期的列值始终相同,我正在努力弄清楚为什么会出现这种情况。跟convert函数有什么关系吗?
如果包含 convert()
的第三个参数,style
,它就变得确定了。例如
[YrMn] AS (convert([varchar](7),[Date],120))
rextester 演示:http://rextester.com/DFNA25042