En primer lugar, el CASE
declaración debe ser parte de la expresión, no la expresión en sí.
En otras palabras, puedes tener:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Pero no funcionará de la forma en que los ha escrito, por ejemplo:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Es posible que tenga más suerte si utiliza sentencias OR combinadas como esta:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Aunque, de cualquier manera, no estoy seguro de qué tan bueno será el plan de consulta que obtendrá. Este tipo de travesuras en un WHERE
La cláusula a menudo evitará que el optimizador de consultas utilice índices.