2012-04-13 5 views
1

独自の索引を作成しようとしています。IS NULLまたはORを持つフィルター式で一意索引を作成

CREATE UNIQUE NONCLUSTERED INDEX NCI_NewUnique 
ON [NewUnique]([U1]) 
WHERE (ISNULL([MyField], '') = '') 

私のエラーはここで

Incorrect WHERE clause for filtered index 'NCI_NewUnique' on table 'NewUnique'. 

で別の試みです。これはISNULL(MyField、 '')部分を削除したものです。これはなぜORですか?

CREATE UNIQUE NONCLUSTERED INDEX NCI_NewUnique 
ON [NewUnique]([U1]) 
WHERE (
     ([MyId] IS NULL) 
     OR 
     ([MyId] IS NOT NULL AND [MyField] IS NOT NULL) 
    ) 

エラーは次のとおりです。

Incorrect syntax near the keyword 'OR'. 

答えて

3

documentation機能とorに応じて許可されていない理由を私は知りません。

<filter_predicate> ::= 
    <conjunct> [ AND <conjunct> ] 

<conjunct> ::= 
    <disjunct> | <comparison> 

<disjunct> ::= 
     column_name IN (constant ,...n) 

<comparison> ::= 
     column_name <comparison_op> constant 

<comparison_op> ::= 
    { IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !< } 
関連する問題