СКОБЫ в SQL, если условия - PullRequest
       9

СКОБЫ в SQL, если условия

0 голосов
/ 11 сентября 2009

У меня есть столбец Rate в одной из моих таблиц SQL, где хранятся данные. Данные в столбце ставок поступают через сохраненный процесс. В этой существующей хранимой процедуре я нашел условие

      BEGIN
        IF     @taxPrd <  '07/01/2000' OR 
               @taxPrd >= '11/01/2001' AND @taxPrd <  '04/01/2003' 

          BEGIN

Я изменил его на ..., чтобы сделать его верным для ВСЕХ периодов после сентября -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

правильное ли расположение скобок?

Ответы [ 2 ]

2 голосов
/ 11 сентября 2009

В вашем случае скобки не нужны (хотя я бы оставил их там для ясности), потому что логический оператор 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 голос
/ 11 сентября 2009

Ваши круглые скобки помещены правильно для того, чего вы хотите достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...