Trước hết, CASE
tuyên bố phải là phần của biểu thức, không phải của chính biểu thức.
Nói cách khác, bạn có thể có:
WHERE co.DTEntered = CASE
WHEN LEN('blah') = 0
THEN co.DTEntered
ELSE '2011-01-01'
END
Nhưng nó sẽ không hoạt động theo cách bạn đã viết, ví dụ:
WHERE
CASE LEN('TestPerson')
WHEN 0 THEN co.personentered = co.personentered
ELSE co.personentered LIKE '%TestPerson'
END
Bạn có thể gặp may mắn hơn khi sử dụng các câu lệnh HOẶC kết hợp như thế này:
WHERE (
(LEN('TestPerson') = 0
AND co.personentered = co.personentered
)
OR
(LEN('TestPerson') <> 0
AND co.personentered LIKE '%TestPerson')
)
Mặc dù, theo cách nào đó, tôi không chắc bạn sẽ nhận được một kế hoạch truy vấn tuyệt vời như thế nào. Những kiểu tai quái này trong WHERE
mệnh đề thường sẽ ngăn trình tối ưu hóa truy vấn sử dụng các chỉ mục.