Re: Operator Precedence problem?
От | John McKown |
---|---|
Тема | Re: Operator Precedence problem? |
Дата | |
Msg-id | Pine.LNX.4.21.0008120851440.16858-100000@linux2.johnmckown.net обсуждение исходный текст |
Ответ на | Operator Precedence problem? (Philip Warner <pjw@rhyme.com.au>) |
Список | pgsql-sql |
Every language that I've ever used (other than APL) has the precedence of "or" being less than "and". So I would always expect the "and" clauses to be evaluated first, then the "or". Just like in math, where in an equation, I expect that the multiplication (and) is done before the addition (or). Unless modified by parentheses just as in your second example. On Sat, 12 Aug 2000, Philip Warner wrote: > > I have a peculiar problem that I can't reproduce on a trivial database: > > select product, priority, count(*) as completed from issue > where > product = 'DIS' > and create_date < '1-Aug-2000' and finish_date >= '1-Aug-2000' or > finish_date is null > group by product, priority; > > This produces a list of all products - not just 'DIS'. If I put the last > two clauses in parnthesis, then it works as expected: > > select product, priority, count(*) as completed from issue > where > product = 'DIS' > and create_date < '1-Aug-2000' and (finish_date >= '1-Aug-2000' or > finish_date is null) > group by product, priority; > > Which makes me think that the precedence of 'or' is not what I expected. Is > this a feature? If so, the fact that I get precisely the opposite behaviour > in simple test databases must be a bug, I think. > > Any help or explanation would be appreciated... > > > > ---------------------------------------------------------------- > Philip Warner | __---_____ > Albatross Consulting Pty. Ltd. |----/ - \ > (A.B.N. 75 008 659 498) | /(@) ______---_ > Tel: (+61) 0500 83 82 81 | _________ \ > Fax: (+61) 0500 83 82 82 | ___________ | > Http://www.rhyme.com.au | / \| > | --________-- > PGP key available upon request, | / > and from pgp5.ai.mit.edu:11371 |/ >
В списке pgsql-sql по дате отправления: