Za prvé, CASE
prohlášení musí být část výrazu, nikoli výrazu samotného.
Jinými slovy, můžete mít:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Ale nebude to fungovat tak, jak jste je napsali, např.:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Možná budete mít větší štěstí při použití kombinovaných výrazů NEBO, jako je tento:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
I když v obou případech si nejsem jistý, jak skvělý plán dotazů získáte. Tyto typy podvodů v WHERE
klauzule často zabrání optimalizátoru dotazů ve využívání indexů.