Na základě toho, co jste řekli v sekci komentářů, si myslím, že musíte změnit jeden fragment kódu...
- Chci, aby karta neměla
field14
jako'Test card'
(t1.field14 <> 'Test Card' and t1.field14 is null)
=>
(t1.field14 <> 'Test Card' OR t1.field14 is null)
Vytvořte logickou tabulku, abyste zjistili, zda opravdu chcete AND
nebo chcete-li 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
UPRAVIT Odešlete komentář
Pomocí OR
ve výše uvedeném kódu nemůže poskytnout TRUE
když Field14
je 'Test Card'
. Oba testy dávají FALSE
takže výsledek musí být FALSE
.
Je potřeba věci rozdělit na etapy. Ladění by mělo být prováděno testováním kusů najednou a postupným prokazováním toho, co funguje, aby se izolovalo to, co ne. Nikdy se nesnažte vše vyřešit najednou, přistupujte k věcem metodicky.
Spusťte tento 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