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 '%%' ) 的检索结果为何不同?
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 '%%' ) 的检索结果为何不同?
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的字段,所以两种方法不同。
name 姓名和addr 地址标记不为空的
并且1_ADDR,2addr,3_addr,4_addr有一个不为空的。
where后面是过滤条件。如果你所有的表内容都不为空那两条语句一样。