--AND (ILLOCN LIKE 'XY%' OR ILLOCN LIKE 'HY%' AND ILDCT NOT IN ( 'OV' , 'IJ' , 'IN' , 'IK' ))--AND ((ILLOCN LIKE 'HY%' AND ILDCT NOT IN ( 'OV' , 'IJ' , 'IN' , 'IK' )) OR (ILLOCN LIKE 'XY%' AND ILDCT NOT IN ( 'OV' , 'IJ' , 'IN'  ,'IK' )))在一个存储过程里,分别使用以上两句语句,得到的结果集竟然不一样。
请问以上两句有什么不同?

解决方案 »

  1.   

    --AND ((ILLOCN LIKE 'XY%' OR ILLOCN LIKE 'HY%') AND ILDCT NOT IN ( 'OV' , 'IJ' , 'IN' , 'IK' ))这样就一样了吧
      

  2.   

    --AND (1 OR 1 AND 0)
    --1--AND ((1 AND 0 OR (1 AND 0)))
    --0
      

  3.   


    把第一句改为:
    --AND ((ILLOCN LIKE 'XY%' OR ILLOCN LIKE 'HY%') AND ILDCT NOT IN ( 'OV' , 'IJ' , 'IN' , 'IK' ))就相同了.
      

  4.   

    --测试查询DECLARE @a int
    DECLARE @b int
    DECLARE @c int
    SET @a =1 
    SET @b = 2
    SET @c = 3
    IF (@a > 2 OR @b > 1 AND @c <2 )
    PRINT 'OJK'
    ELSE
    PRINT 'XXo'--查询结果--XXo--结论AND的优先级高于OR,因此查询等价于...
    IF (@a > 2 OR (@b > 1 AND @c <2 ))
    ...