Innanzitutto, il CASE
la dichiarazione deve essere parte dell'espressione, non l'espressione stessa.
In altre parole, puoi avere:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Ma non funzionerà nel modo in cui li hai scritti, ad esempio:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Potresti avere più fortuna usando istruzioni OR combinate come questa:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Anche se, in entrambi i casi, non sono sicuro di quanto otterrai un piano di query. Questi tipi di imbrogli in un WHERE
spesso impedirà a Query Optimizer di utilizzare gli indici.