Pertama, CASE
pernyataan harus bagian ekspresi, bukan ekspresi itu sendiri.
Dengan kata lain, Anda dapat memiliki:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Tapi itu tidak akan berfungsi seperti yang Anda tulis, misalnya:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Anda mungkin lebih beruntung menggunakan pernyataan OR gabungan seperti ini:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Meskipun demikian, saya tidak yakin seberapa hebat rencana kueri yang akan Anda dapatkan. Jenis kejahatan ini dalam WHERE
klausa akan sering mencegah pengoptimal kueri menggunakan indeks.