SQL 语句中使用OR用括号/不用括号有什么不同?

您所在的位置:网站首页 attributes方法为什么不加括号 SQL 语句中使用OR用括号/不用括号有什么不同?

SQL 语句中使用OR用括号/不用括号有什么不同?

2024-06-11 15:53| 来源: 网络整理| 查看: 265

前言:实际工作上遇到的问题,当我查我查2022-03的数据会出现其他日期的数据呢?为什么会出现这样的问题呢,看下面的图。(注意看数据)

原因:这是因为OR比AND低operator precedence(运算符优先级).每当DB看到类似的表达式时

这是我们最初的SQL语句(不加括号):

SELECT * FROM 表名 A WHERE A.DATE_CODE= '2022-03' AND A.ITEM_NAME LIKE '%入库单价%' OR A.ITEM_NAME LIKE '%消耗单价%'

首先会去评估AND 这个关键字,那么语句就会变成这样

SELECT * FROM 表名 A WHERE A.DATE_CODE= '2022-03' (AND A.ITEM_NAME LIKE '%入库单价%') OR A.ITEM_NAME LIKE '%消耗单价%'

那么这样子编译下来最后其他月份的消耗单价被作为单个条件被查出来了,这也就是为什么会出现上面的问题。

加括号:所以这个时候我们要得到数据的准确性就必须在OR条件前后加上括号,那么这样子就会被作为单个条件不会像上面那样子出现其他月份的数据。

SELECT * FROM 表名 A WHERE A.DATE_CODE= '2022-03' AND (A.ITEM_NAME LIKE '%入库单价%' OR A.ITEM_NAME LIKE '%消耗单价%')

那么这样子查的数据都是准确的。数据如下图

 最后希望能帮助到大家。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3