2016-07-29 44 views
0

我有這個查詢問題,它不會識別第二個OR條件,我不知道爲什麼。Sql不會識別或條件

select * 
from afip_inctascli 
WHERE UCASE(COALESCE(Cliente,'N')) = 'N' OR 
UCASE(Cliente) = 'S' AND 
(TipoCta_Host IS NULL OR 
NroCuenta IS NULL OR 
UCASE(RTRIM(COALESCE(Estado,'C'))) <> 'D' OR 
UCASE(RTRIM(COALESCE(Estado,'C'))) <> 'A') 

這種特殊OR UCASE(RTRIM(COALESCE(Estado,'C'))) <> 'A')

回答

2

我猜測你想要的是:

WHERE UCASE(COALESCE(Cliente, 'N')) IN ('S', 'N') AND 
     (TipoCta_Host IS NULL OR 
     NroCuenta IS NULL OR 
     UCASE(RTRIM(COALESCE(Estado,'C'))) NOT IN ('A', 'D') 
    ) 

我猜前兩個條件都應該是一個,接着是第二個。

第二布爾表達式具有這樣的邏輯:

UCASE(RTRIM(COALESCE(Estado,'C'))) <> 'D' OR 
    UCASE(RTRIM(COALESCE(Estado,'C'))) <> 'A' 

這是平凡真。如果碰巧等於'D',那麼它肯定不等於'A'