我遇到此查询的问题,它不会识别第二个OR条件,我无法识别原因。
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')
答案 0 :(得分: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'
。