`

oracle and or 优先级

阅读更多


刚刚在项目中遇到这样一个问题,SQL语句如下:

select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 and STATUS=3

我想要的结果的条件是:1. LIBRARY_ID=1 或者 LIB_ID=1

                                       2.STATUS=3

但是结果并非如此,出现了STATUS!=3的结果,但是却匹配了 LIBRARY_ID=1 or LIB_ID=1

为什么呢

原来这个SQL的执行是这样的:

select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 and STATUS=3

修改为:

select * from LOAN_BACK_LIBRARY where STATUS=3 and LIBRARY_ID=1 or LIB_ID=1 依然不正确

呵呵,发现问题了:

where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:and的执行优先级最高!

关系型运算符优先级高到低为:not and or

问题的解决办法是:

用()来改变执行顺序!!!!

上面我所需要的SQL语句是这样的

select * from LOAN_BACK_LIBRARY where STATUS=3 and (LIBRARY_ID=1 or LIB_ID=1 )

分享到:
评论

相关推荐

    oracle逻辑运算符与其优先级简介

    7. AND运算符:优先级高于OR,意味着在没有括号的情况下,AND条件会先被计算。 8. OR运算符:优先级最低,仅在AND运算符之后进行计算。 注意,使用括号可以改变运算的顺序,以确保表达式的正确性。例如,`SELECT * ...

    ORACEL逻辑比较和优先级规则

    Oracle SQL中的逻辑运算符优先级为:`NOT` > `AND` > `OR`。这意味着`NOT`运算符优先级最高,其次是`AND`,最后是`OR`。 - **示例**: 考虑以下查询: ```sql SELECT last_name || '' || salary * 1.05 AS ...

    oracle 电子书

    - **AND, OR**: 分别表示逻辑“与”和“或”,其中AND的优先级高于OR。 **注意**:空值(NULL)在比较运算中会产生特殊的行为,与任何值比较都会得到未知(NULL)的结果,因此在设计查询时应特别注意处理空值。 ...

    oracle数据库从入门到精通.pdf

    在执行包含多个条件的查询时,如同时使用like、or和and,需要特别注意运算符的优先级,并用括号来明确条件的组合顺序。 关于Oracle数据类型,文档中介绍了多种数据类型,包括字符型、数值型、日期型、以及二进制型...

    Oracle 3.1&3.2.docx

    需要注意的是,在Oracle SQL中,`AND`运算符的优先级高于`OR`运算符。这意味着如果没有使用括号来指定计算顺序的话,系统会先计算`AND`再计算`OR`。例如: ```sql SELECT * FROM table_name WHERE column1 = value1...

    oracle精华文档

    `NOT`的优先级最高,然后是`AND`,最后是`OR`。注意括号的使用可以改变运算顺序。 3. **ORDER BY** 用于对查询结果进行排序,`ASC`表示升序,`DESC`表示降序。可以使用列的别名或多字段进行排序。 4. **日期和时间...

    oracle 常用应用操作总结

    - Oracle SQL的操作符优先级遵循特定的规则,从高到低依次是:算术操作符、连接操作符、比较操作符、NOT逻辑操作符、AND逻辑操作符、OR逻辑操作符。 3. **创建存储过程**: - `CREATE PROCEDURE`语句用于创建存储...

    08.Oracle的where子句1

    2. OR:双值运算符,只要左右两侧的条件有一个为真,结果就为真。 3. NOT:单值运算符,用于反转条件的真假。如果原始条件为真,NOT后的结果为假;如果原始条件为假,结果为真。 例如,如果我们想查询颜值为'漂亮'...

    oracle 常用SQL语法手册

    本文将深入探讨Oracle中的一些常用SQL语法,包括SELECT、WHERE、AND及OR等关键概念。 首先,我们关注的是SELECT语句,它是SQL中最基本也最重要的部分,用于从数据库中获取数据。基本的SELECT语法如下: ```sql ...

    oracle尚观培训文档

    - **逻辑条件**:使用逻辑运算符(AND、OR、NOT)来组合多个条件。 - **优先规则**:SQL中的条件优先级遵循一般的数学运算规则。 - **排序** - **降序排序**:使用ORDER BY 子句后跟DESC关键字实现。 - **用列...

    ORACLE 查询.docx

    - **AND与OR混合使用**:需要使用括号来调整运算优先级,如`SELECT * FROM t_owners WHERE (name LIKE '%刘%' OR housenumber LIKE '%5%') AND addressid=3`。 2. **范围查询**: - 使用`BETWEEN`关键字可方便地...

    Oracle数据库的学习总结一

    =`, `, `, `>`, `>=` 进行比较,以及 `AND`, `OR`, `NOT` 进行逻辑操作。例如:`SELECT * FROM emp WHERE deptno = 20 AND sal > 2000;` - **去除重复行**: 使用 `DISTINCT` 关键字去除查询结果中的重复行。例如:`...

    Oracle.docx

    逻辑运算符有AND、OR和NOT,用于组合多个条件。范围查询可以用BETWEEN,例如`BETWEEN 最小值 AND 最大值`,而IN和NOT IN则用于指定值的集合查询。NULL值的处理很重要,可以使用`IS NULL`或`IS NOT NULL`进行判断。 ...

    鸿鹄论坛_oracle四大宝典之1:Oracle Sql基础.

    9. **逻辑条件**:可以使用`AND`、`OR`和`NOT`等逻辑运算符来组合条件。 10. **优先规则**:在复杂的查询条件中,需要注意运算符的优先级。 ##### 2.3 排序 1. **降序排序**:使用`ORDER BY 列 DESC`对结果进行...

    oracle教学4笔记

    - `OR`:逻辑或 - `NOT`:逻辑非 - `BETWEEN AND`:指定范围 - `IN`:指定列表 - `NOT IN`:指定不在列表中 - `LIKE`:模糊匹配 **列取别名:** ```sql SELECT 列 AS 别名 FROM 表名; ``` - 别名可以简化列的显示...

    Oracle Sql基础 Oracle Sql基础 Oracle Sql基础

    - 在复合条件下,逻辑运算符的优先级顺序是NOT、AND、OR。 **2.3 排序** - **2.3.1 降序排序** - 使用ORDER BY 列 DESC; 来按降序排序。 - **2.3.2 用列别名排序** - 可以使用ORDER BY 别名 ASC/DESC; 来根据...

    oracle讲解Chapter2.pptx

    算术运算符具有最高的优先级,接着是连接运算符,然后是比较运算符,逻辑运算符中NOT优先于AND,AND优先于OR。 4. **SQL*Plus函数**: - SQL*Plus函数是一类用于处理和转换数据的内置函数,它们接受一个或多个参数...

Global site tag (gtag.js) - Google Analytics