读书人

条件部分的执行顺序,该如何解决

发布时间: 2012-05-23 13:44:13 作者: rapoo

条件部分的执行顺序

SQL code
--CREATE TABLE #T1--(--    col1 int not null,--    col2 int not null--)--insert into #t1--Select 1,2 union--Select 3,1 union--Select 0,2 union--Select 1,0--goSelect * From #T1Select * from #T1 Where (col1<>0) and (col2/col1>1.5)--1Select * from #T1 Where (col2/col1>1.5) and (col1<>0)--2Select * from #T1 Where (col2/col1>1.5)              --3


为何1、2句不报错,3却报错(3如果报错的话2应该也报错的啊) ?

[解决办法]
不是有col1<>0这个条件吗?
[解决办法]
第二句的col1<>0排除了0作为除数的可能性,所以是对的,语句三没有。其实意思是同时满足where后的条件。
[解决办法]
条件and是与的意思,就是都要为真。
第3条,当没有col1<>0这个条件,分母为0,所以错误。而第1,2条语句,则家里分母不为零的过滤条件,自然就不会出错。

读书人网 >SQL Server

热点推荐