>>Hi,
>>
>>Is it possible and if yes, how, to create a filtered index on Not Empty value? For example, I tried the following:
>>
>>
>>CREATE UNIQUE NONCLUSTERED INDEX [UniqueExceptEmpty]
>>ON [MYTABLE] (EMAIL_ADDR)
>>WHERE LEN(EMAIL_ADDR) > 0
>>
>>
>>But I get error "Incorrect where clause." What is wrong with my syntax?
>
>Apparently it's a limitation of the where clause. This sort of worked for me
>
>CREATE UNIQUE INDEX [UniqueExceptEmpty]
>ON dbo.EmailAddresses (EmAddress)
>WHERE EmAddress <> ''
>
>(It gave an error about uniqueness as I probably have 2 same addresses).
>
>In the Limitations & Restrictions section in BOL you can read
>
>Filtered indexes are defined on one table and only support
simple comparison operators. If you need a filter expression that references multiple tables or has complex logic, you should create a view.
Your syntax works for me. And in my case I only need this unique index on one table. Therefore no need for a view.
Thank you.
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham