Dựa trên những gì bạn đã nói trong phần nhận xét, tôi nghĩ bạn cần thay đổi một đoạn mã ...
- Điều tôi muốn là thẻ không được có
field14
dưới dạng'Test card'
(t1.field14 <> 'Test Card' and t1.field14 is null)
=>
(t1.field14 <> 'Test Card' OR t1.field14 is null)
Xây dựng một bảng logic để kiểm tra xem bạn có thực sự muốn AND
hoặc nếu bạn muốn OR
field14 | (field14 <> 'Test Card') | (t1.field14 is null) | A OR B | A AND B
--------------------------------------------------------------------------------
'Test Card' | FALSE | FALSE | FALSE | FALSE
NULL | NULL | TRUE | TRUE | FALSE
'Any Card' | TRUE | FALSE | TRUE | FALSE
CHỈNH SỬA Theo dõi để nhận xét
Sử dụng OR
trong đoạn mã trên không thể mang lại TRUE
khi Field14
là 'Test card'
. Cả hai bài kiểm tra đều mang lại FALSE
và do đó kết quả phải là FALSE
.
Bạn cần chia nhỏ mọi thứ theo từng giai đoạn. Gỡ lỗi nên được thực hiện bằng cách kiểm tra từng phần một và dần dần chứng minh những gì hoạt động để cô lập những gì không. Đừng bao giờ cố gắng sắp xếp mọi thứ cùng một lúc, hãy tiếp cận mọi thứ một cách có phương pháp.
Chạy thử nghiệm này ...
SELECT
*,
CASE WHEN field14 <> 'Test Card' THEN 1 ELSE 0 END Test1,
CASE WHEN field14 IS NULL THEN 1 ELSE 0 END Test2,
CASE WHEN field14 <> 'Test Card' OR field14 IS NULL THEN 1 ELSE 0 END 1_OR_2,
CASE WHEN field14 <> 'Test Card' AND field14 IS NULL THEN 1 ELSE 0 END 1_AND_2
FROM
tblCustomer