Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Oracle SQL IN Operator AND OR

Posted on 2008-06-18
5
Medium Priority
?
1,175 Views
Last Modified: 2013-12-12
Hi,
I have the same list of text values which are being compared to two different fields using the IN operator. I get different results if i bracket the AND OR as per below. Which one should I be using?

SELECT * FROM TABLE
WHERE FIELDA IS NOT NULL
AND FIELDB IN (ETC,ETC)
OR FIELDC IN (ETC,ETC)

or

SELECT * FROM TABLE
WHERE FIELDA IS NOT NULL
AND
(FIELDB IN (ETC,ETC)
OR FIELDC IN (ETC,ETC))

Cheers,
Brett
0
Comment
Question by:brettanderson77
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 21812160
>I get different results if i bracket the AND OR as per below.
that is normal

>Which one should I be using?
depends on what result you want.

if you use AND, both fields must match, if you use OR, either field match will return the row.
0
 

Author Comment

by:brettanderson77
ID: 21812263
Hi,

Thanks for the response yet the question is not around AND/OR specifically, it is around using brackets.

Both options are using AND and OR in a similar manner yet one has the two OR options bracketed to seperate it from the first condition.

Op 1:
Where Condition 1
AND Condition 2
OR Condition 3

Op 2:
Where Condition 1
AND
 (Condition 2
OR Condition 3)

Hope you get my drift?

Cheers,
Brett
0
 
LVL 143

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 2000 total points
ID: 21812461
I see.
indeed, using brackets when mixing AND and OR are important, as

Op 1:
Where Condition 1
AND Condition 2
OR Condition 3

will work like this:

Where (Condition 1
AND Condition 2)
OR Condition 3

which is indeed different as from Op2 code...

hence => rule: when having both AND and OR in a condition, put the ( ) as needed to ensure
1) the conditions are applied "correctly"
2) better readability

note: from technical term, they will be evaluated technically as they are written, it's just a what you expect might differ :)
0
 

Author Comment

by:brettanderson77
ID: 21812693
Great, thank you. So I think I was on the right track with using option 2 which will give me:

Condition 1 is true
AND
(Condition 2 OR 3 are true)

Let me know if i'm wrong!

Cheers,
Brett
0
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 21812900
you got it!
0

Featured Post

 [eBook] Windows Nano Server

Download this FREE eBook and learn all you need to get started with Windows Nano Server, including deployment options, remote management
and troubleshooting tips and tricks

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article started out as an Experts-Exchange question, which then grew into a quick tip to go along with an IOUG presentation for the Collaborate confernce and then later grew again into a full blown article with expanded functionality and legacy…
I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
Via a live example show how to connect to RMAN, make basic configuration settings changes and then take a backup of a demo database
This video explains at a high level about the four available data types in Oracle and how dates can be manipulated by the user to get data into and out of the database.

704 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question