Först och främst, CASE
uttalandet måste vara del av uttrycket, inte uttrycket i sig.
Du kan med andra ord ha:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Men det kommer inte att fungera som du har skrivit dem, t.ex.:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Du kanske har bättre lycka med att använda kombinerade ELLER-satser som detta:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Även om jag i vilket fall som helst inte är säker på hur bra en frågeplan du kommer att få. Dessa typer av sken i en WHERE
klausul kommer ofta att förhindra frågeoptimeraren från att använda index.