Po pierwsze, CASE
oświadczenie musi być częścią wyrażenia, a nie samego wyrażenia.
Innymi słowy, możesz mieć:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Ale to nie będzie działać tak, jak je napisałeś, np.:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Możesz mieć więcej szczęścia, używając połączonych stwierdzeń OR, takich jak:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Chociaż tak czy inaczej nie jestem pewien, jak wspaniały plan zapytań otrzymasz. Tego typu wybryki w WHERE
klauzula często uniemożliwia optymalizatorowi zapytań korzystanie z indeksów.