Sulla base di ciò che hai detto nella sezione commenti, penso che tu debba cambiare uno snippet di codice...
- Quello che voglio è che la carta non debba avere
field14
come'Test card'
(t1.field14 <> 'Test Card' and t1.field14 is null)
=>
(t1.field14 <> 'Test Card' OR t1.field14 is null)
Costruisci una tabella logica per verificare se vuoi veramente AND
o se vuoi 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
MODIFICA Continua per commentare
Usando OR
nel codice sopra non può restituire TRUE
quando Field14
è 'Test Card'
. Entrambi i test producono FALSE
e quindi il risultato deve essere FALSE
.
Devi scomporre le cose in più fasi. Il debug dovrebbe essere eseguito testando i pezzi alla volta e dimostrando gradualmente cosa funziona per isolare ciò che non lo fa. Non cercare mai di sistemare tutto in una volta, affronta le cose in modo metodico.
Esegui questo 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