Allereerst de CASE
verklaring moet deel zijn van de uitdrukking, niet de uitdrukking zelf.
Met andere woorden, u kunt het volgende hebben:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Maar het zal niet werken zoals je ze hebt geschreven, bijvoorbeeld:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Misschien heb je meer geluk met het gebruik van gecombineerde OR-statements zoals deze:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Hoewel, hoe dan ook, ik weet niet zeker hoe geweldig een queryplan je zult krijgen. Dit soort shenanigans in een WHERE
clausule zal vaak voorkomen dat de query-optimizer indexen gebruikt.