SELECT * FROM TABLE  和  SELECT * FROM TABLE  WHERE NAME LIKE '%%' AND ADDR LIKE '%%'  AND (1_ADDR LIKE '%%' OR 2_ADDR LIKE '%%'  OR 3_ADDR LIKE '%%' OR 4_ADDR LIKE '%%' )  的检索结果为何不同?

解决方案 »

  1.   

    like '%%' 不会把为NULL的值选出来.
      

  2.   


    SQL> select * from tabcopy;        ID NAME            SAL
    ---------- -------- ----------
             1 张三              1
             2 李四              1
             3 王五              1
             4                   1SQL> select * from tabcopy where id like '%%' and name like '%%' and sal like '%%';        ID NAME            SAL
    ---------- -------- ----------
             1 张三              1
             2 李四              1
             3 王五              1SQL> 
    由此可见,楼主的第二种方法已过滤了字段为null的字段,所以两种方法不同。
      

  3.   

    你第二个查询的意思就是查出
    name 姓名和addr 地址标记不为空的
    并且1_ADDR,2addr,3_addr,4_addr有一个不为空的。
    where后面是过滤条件。如果你所有的表内容都不为空那两条语句一样。