Първо, CASE
изявлението трябва да е част на израза, а не на самия израз.
С други думи, можете да имате:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Но няма да работи по начина, по който сте ги написали, например:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Може да имате по-голям късмет, като използвате комбинирани изрази ИЛИ като това:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Въпреки че, така или иначе, не съм сигурен колко страхотен план за заявки ще получите. Тези видове шеги в WHERE
клаузата често ще попречи на оптимизатора на заявки да използва индекси.