Basierend auf dem, was Sie in den Kommentaren gesagt haben, denke ich, dass Sie ein Code-Snippet ändern müssen ...
- Ich möchte, dass die Karte
field14
nicht haben sollte als'Test card'
(t1.field14 <> 'Test Card' and t1.field14 is null)
=>
(t1.field14 <> 'Test Card' OR t1.field14 is null)
Erstellen Sie eine Logiktabelle, um zu prüfen, ob Sie wirklich AND
wollen oder wenn Sie wollen 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
BEARBEITEN Folge zum Kommentieren
Mit OR
im obigen Code kann nicht TRUE
ergeben wenn Field14
ist 'Test card'
. Beide Tests ergeben FALSE
und daher muss das Ergebnis FALSE
sein .
Sie müssen die Dinge in Etappen aufteilen. Das Debuggen sollte durchgeführt werden, indem Stück für Stück getestet und schrittweise nachgewiesen wird, was funktioniert, um zu isolieren, was nicht funktioniert. Versuchen Sie nie, alles auf einmal zu regeln, gehen Sie methodisch an die Sache heran.
Führen Sie diesen Test aus...
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