While continuing my exploration into the world of DB2 databases, I found myself confused as to why my basic SELECT … WHERE … statement were failing when I tried to do AND/OR clauses. After a little fumbling around I found the solution… parentheses.
Parenthesis? you ask, yes. Simply put when you want to write a compound WHERE clause using AND and/or OR statements you need to wrap each clause in parentheses. To illustrate lets start with a basic SQL select query and then we’ll show how it needs to be written for DB2
SELECT first_name, last_name, id FROM APP_DB..APP_USERS WHERE active=1 AND is_admin=1
DB2 SQL Statement
SELECT first_name, last_name, id FROM APP_SCHEMA.APP_USERS WHERE ( active = 1 ) AND ( is_admin = 1 );
As you can see for the DB2 query to function properly it needs the parentheses around the clauses while most other SQL languages don’t. Hopefully this little tidbit will save others the half hour I spent fumbling around with this little subtle syntax difference.