2016-07-29 5 views
0

私はこのクエリに問題がありますが、2番目の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') 
    ) 

私は最初の2つの条件は、1つのことになっている推測しています。

二ブール式は、このロジックを持っている:

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

これは自明真実です。何かが'D'に等しくなる場合は、それは確かに'A'と等しくありません。

関連する問題