Først og fremmest CASE
erklæringen skal være del af udtrykket, ikke selve udtrykket.
Du kan med andre ord have:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Men det vil ikke fungere, som du har skrevet dem, f.eks.:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Du har måske bedre held med at bruge kombinerede ELLER-udsagn som denne:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Selvom jeg i hvert fald ikke er sikker på, hvor stor en forespørgselsplan du får. Disse typer af skænderier i en WHERE
klausul vil ofte forhindre forespørgselsoptimeringsværktøjet i at bruge indekser.