我的一个SQL表中有一个Rate列,其中存储了Data。 费率栏中的数据即将进入存储过程。 在那个现有的存储过程中,我找到了条件
BEGIN
IF @taxPrd < '07/01/2000' OR
@taxPrd >= '11/01/2001' AND @taxPrd < '04/01/2003'
BEGIN
我将其更改为...以便在sep-1/09之后的所有句号中使其成为
BEGIN
IF @taxPrd < '07/01/2000' OR
( @taxPrd >= '11/01/2001' AND @taxPrd < '04/01/2003' ) OR
@taxPrd >= '09/01/2009'
BEGIN
因此现在该费率对
有效 all less than Jul2000 OR
all in between Nov2001 and Apr2003 OR
all more than Sep2009
括号的展示位置是否正确?
答案 0 :(得分:2)
在你的情况下,括号不是必需的,(虽然为了清楚起见我将它们留在那里),因为布尔运算符AND优先于OR运算符。也就是说,只要谓词中有OR和AND的混合,就首先处理AND,然后处理结果表达式(其中包含OR)。
例如
A Or B Or C And D Or E And F And G Or H
将作为
处理 A Or B Or (C And D) Or (E And F And G) Or H
\ / \ /
|| ||
A Or B Or C&D Or E&F&G Or H
答案 1 :(得分:1)
您的括号已正确放置,以达到您想要达到的效果。