SQL中逻辑运算 and or优先级

原创 2013年12月04日 10:14:10

今天想写一个查询,实现“补加”数据的目的,执行的SQL如下:

 

select * from table_a where 1=1 and orgcode like '%111111%' or state like '%04%' and eventid like '%222222%'

 

备注说明:
1、like '%111111%' 能够查询所有数据
2、like '%04%' 能够查询一条数据
3、like '%222222%' 能够查询4条数据

我的目的是想根据like '%222222%'查询4条数据 + like '%04%'查询1条数据 = 5条数据;结果执行上面这个SQL查询出了所有的数据,

最后查找原因是——and的优先级比or的优先级高;上面的SQL实际等价于

select * from table_a where 1=1 and orgcode like '%111111%' or (state like '%04%' and eventid like '%222222%')

 

如果想达到“筛选”的目的,可以如下改

select * from table_a where 1=1 and orgcode like '%111111%'  and eventid like '%222222%' or state like '%04%'

 

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

 

备注:为了改变逻辑运算符的顺序,我们也可以使用()区分,它的优先级是最高的

黑马程序员--逻辑运算的优先级和结合性

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 概念  1.优先级:C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式...

sql语句中的逻辑运算:或、与、异或

文章转自:爱符号  http://www.afuhao.com/article_articleId-165.shtml 在讲SQL语句前,看看C#中,关于 或、与、异或 的操...

hive支持sql大全(1-3:关系运算/数学运算/逻辑运算)

一、关系运算:1. 等值比较: =          语法:A=B          操作类型:所有基本类型          描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALS...

Sql Server中and和or的优先级问题

背景               前几天在给徒弟验收第一遍机房收费系统的时候,对于“组合查询”这一块,如果把三行查询内容输满的话,就会出错误,两行没有问题,经过第二遍验收后来和徒弟一同探讨这个问题,找...

51汇编之逻辑运算类指令

  • 2015年11月25日 21:12
  • 18.05MB
  • 下载

Oracle SQL逻辑操作符and、or与not

SQL提供的逻辑操作符与大部分其他编程语言中可以使用的逻辑操作符相似。      逻辑操作符AND和OR组合两个布尔值之间的结果并产生基于这两个结果的单结果,而逻辑操作符NOT得到相反结果...
  • kb5706
  • kb5706
  • 2012年05月09日 23:38
  • 3033

顺序结构域逻辑运算C语言

  • 2014年07月15日 17:19
  • 210KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL中逻辑运算 and or优先级
举报原因:
原因补充:

(最多只允许输入30个字)