仓酷云
标题:
SqlServer中or和and的优先级剖析
[打印本页]
作者:
飘灵儿
时间:
2015-1-16 14:07
标题:
SqlServer中or和and的优先级剖析
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。本来一向都没有弄分明sqlserver中and和or的优先级干系,觉得他们的优先级都是一样,在实行的时分按呈现的按次从左到右实行。但明天我在写一个束缚,以下:
(number>0andprenumber>0)or(number<0andprenumber<0)
保留后体系老是主动将我的束缚修正以下:
number>0andprenumber>0ornumber<0andprenumber<0
就是往失落了我的括号,我想,怎样会如许呢?如许不就改动了我的语意了吗?呵呵,查询材料后得知,本来,下面两个束缚的意义是一样的。
缘故原由:
在SqlServer中,and的优先级比or的优先级要高
。地点,在下面的束缚中,会先实行or双方的and前提,再实行or前提。
上面,我们能够做一个测试。
创立表及数据以下:
if(object_id(table1)isnotnull)
begin
droptabletable1
end
go
createtabletable1
(
IDintidentity(1,1)primarykey,
num1intnotnull,
num2intnotnull
)
insertintotable1(num1,num2)
select-1,-1
unionall
select-1,2
unionall
select1,2
unionall
select0,0
然后我们实行sql
select*fromtable1wherenum1>0ornum2>0andnum1<0
假如or与and的优先级是一样的话,那末应当只能查出一条数据,即
IDnum1num2
2-12
但实践上,我们实行后发明,这有查出两条数据了,
IDnum1num2
2-12
312
这是由于它先实行了and的前提,再实行or的前提,即同等以下:
select*fromtable1wherenum1>0or(num2>0andnum1<0)
那末,假如我们必定要sql先实行or前提,就要利用()来改动前提的实行按次了。仍是下面的sql,假如我们要先实行or前提,能够修正sql以下:
select*fromtable1where(num1>0ornum2>0)andnum1<0
导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
作者:
乐观
时间:
2015-1-18 12:03
对于微软系列的工具除了一遍遍尝试还真没有太好的办法
作者:
只想知道
时间:
2015-1-25 10:53
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
作者:
谁可相欹
时间:
2015-2-2 21:54
也可谈一下你是怎么优化存储过程的?
作者:
admin
时间:
2015-2-8 08:09
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
作者:
若相依
时间:
2015-2-25 05:05
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
作者:
因胸联盟
时间:
2015-3-7 17:33
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
作者:
分手快乐
时间:
2015-3-15 11:37
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
作者:
若天明
时间:
2015-3-22 01:09
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
作者:
爱飞
时间:
2015-3-22 01:09
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2