2017-04-05 48 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