2017-04-05 26 views
0

一个全文索引我有如下表:计算列与格式化过的时间

[dbo].[TableName] 
(
[created] datetime not null, 
[modified] datetime null, 
[computedValue] as 
(
    format([created], 'yyy-MM-dd MM/dd/yyy') + 
    case when ([modified] is not null) 
    then 
      (format([modified], 'yyyy-MM-dd MM/dd/yyyy')) 
    end 
) 

当我试图改变这个表全文索引出现问题。

ALTER FULLTEXT INDEX ON [dbo].[TableName] ADD ([computedValue] LANGUAGE 1033); 

对此,我得到以下错误:

Computed column 'computedValue' cannot be used for full-text search because it is nondeterministic or imprecise nonpersisted computed column. 

根据MSDN: https://msdn.microsoft.com/en-us/library/ms181984(v=sql.110).aspx

“全内置字符串函数是确定性的。” 所以我为了说这个专栏不是确定性的,而绞尽脑汁。

+0

这个答案显示了'FORMAT)大量的研究(',其状态为'确定性与非确定性':http://stackoverflow.com/a/37695342/5089204 – Shnugo

回答

1

你可以试试吗? (它的工作对我来说2008年MSSQL)(格式()似乎是不确定性(见[链接] Can I make SQL Server FORMAT deterministic?

CREATE TABLE TableName 
    (ID INT NOT NULL, 
    [created] datetime not null, 
    [modified] datetime null, 
    [computedValue] as (
     CONVERT(varchar(10), [created], 121) +' ' + CONVERT(varchar(10), [created], 110) 
     + CASE WHEN ([modified] IS NOT NULL) 
     THEN CONVERT(varchar(10), [modified], 121) +' ' + CONVERT(varchar(10), [modified], 110) 
     END 
    ) 
    ) 
    ; 
    ALTER TABLE TABLENAME ADD CONSTRAINT TABLENAME_PK PRIMARY KEY (ID); 
    GO 
    CREATE FULLTEXT CATALOG CATALOG1; 
    GO 
    CREATE FULLTEXT INDEX ON [TableName]([computedValue] LANGUAGE 1033) KEY INDEX TABLENAME_PK ON CATALOG1; 
+0

我刚刚回答我的问题,结果相同。是的,这也适用于我:) – Lubudubu1010