W oparciu o to, co powiedziałeś w sekcji komentarzy, myślę, że musisz zmienić jeden fragment kodu...
- Chcę, aby karta nie zawierała
field14
jako'Test card'
(t1.field14 <> 'Test Card' and t1.field14 is null)
=>
(t1.field14 <> 'Test Card' OR t1.field14 is null)
Utwórz tabelę logiczną, aby sprawdzić, czy naprawdę chcesz AND
lub jeśli chcesz 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
EDYTUJ Kontynuuj, aby skomentować
Używanie OR
w powyższym kodzie nie może dać TRUE
kiedy Field14
to 'Test card'
. Oba testy dają FALSE
więc wynik musi być FALSE
.
Musisz rozbić rzeczy na etapy. Debugowanie powinno odbywać się poprzez testowanie fragmentów na raz i stopniowe udowadnianie, co działa, aby wyizolować to, co nie działa. Nigdy nie próbuj uporządkować wszystkiego na raz, podchodź do rzeczy metodycznie.
Uruchom ten test...
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