Op basis van wat je hebt gezegd in het opmerkingengedeelte, denk ik dat je één codefragment moet wijzigen...
- Wat ik wil is dat die kaart geen
field14
. mag hebben als'Test card'
(t1.field14 <> 'Test Card' and t1.field14 is null)
=>
(t1.field14 <> 'Test Card' OR t1.field14 is null)
Bouw een logische tabel op om te controleren of je echt AND
. wilt of als je OR
. wilt
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
BEWERKEN Follow-up om te reageren
OR
. gebruiken in de bovenstaande code kan TRUE
niet opleveren wanneer Field14
is 'Test card'
. Beide tests leveren FALSE
op en dus moet het resultaat FALSE
zijn .
Je moet dingen in fasen opsplitsen. Debuggen moet worden gedaan door stukjes tegelijk te testen en geleidelijk te bewijzen wat werk is om te isoleren wat niet. Probeer nooit alles in één keer op een rijtje te zetten, benader dingen methodisch.
Voer deze test uit...
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