简体   繁体   中英

Operator precedence for IBM DB2

What are the operator precedence rules for the DB2 RDBMS engine?

I am looking for explicit rules which mention actual operators instead of precedence relations between groups of operators.

I found this document http://www-01.ibm.com/support/knowledgecenter/SSEPEK_10.0.0/com.ibm.db2z10.doc.sqlref/src/tpc/db2z_precedenceofoperations.dita via googling, but I am looking for something that goes into more detail, eg precedence relations between AND, OR and NOT

If you're looking for search-condition operators, then see the Information Center section on Search conditions . Additional details are in the topic, but the basic rules are:

Search conditions within parentheses are evaluated first. If the order of evaluation is not specified by parentheses, NOT is applied before AND, and AND is applied before OR. The order in which operators at the same precedence level are evaluated is undefined to allow for optimization of search conditions.

From DB2 for z/OS 10.0.0>DB2 reference information>DB2 SQL>Language elements>Expressions>Precedence of operations

Expressions within parentheses are evaluated first. When the order of evaluation is not specified by parentheses, prefix operators are applied before multiplication and division, and multiplication, division, and concatenation are applied before addition and subtraction. Operators at the same precedence level are applied from left to right.

I used a case in my order by and it seemed to work

 SELECT * FROM TABLE WHERE KEY IN (KEY1 , KEY2) ORDER BY CASE WHEN KEY = KEY1 THEN 1 ELSE 2 END 

I haven't check with more than 2 keys.

It's over here . Simple google could help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM