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
field14nicht 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