select name from student和select name from student where name='%%' 的区别?

snfneeq2009 2010-10-19 02:50:40
select name ,address from student 和 select name,address from where name='%%' and address='%%'
在什么情况下有区别?有什么区别?
...全文
337 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
minitoy 2010-10-19
  • 打赏
  • 举报
回复
呵呵一个和两个一样.
Diza1986 2010-10-19
  • 打赏
  • 举报
回复
通配符
_(下划线) 表示一个任意字符
%(百分号) 表示0个或多个任意字符

要和like连用匹配

再者两个%连着写有意义么?
minitoy 2010-10-19
  • 打赏
  • 举报
回复
如果是like的笔误的话.两者的区别在于对null的处理上.
第一句可以选出两个字段其中之一为null或都为null的数据,第二句只会选出两字段都不为null的数据.
原因如下.
SQL> select 1 from dual where null like '%%';

1
----------

SQL>
minitoy 2010-10-19
  • 打赏
  • 举报
回复
第二个sql写的就有问题吧
zkl516321905 2010-10-19
  • 打赏
  • 举报
回复
楼主这两个SQL用sqlserver,oracle10G查询出来两个查询结果集不一样,其他产品还没试,但如果说区别的话,猜测楼主是为了想明白为什么这样子写吧?select name ,address from student 这个SQL毫无疑问是需要全表扫描的,select name,address from where name='%%' and address='%%'这个SQL因为有where语句,会先根据条件去找,如果name,address列有索引的话,这样子有条件的选择会避免全表扫描,会大大提高SQL执行效率。
心中的彩虹 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 snfneeq2009 的回复:]
select name ,address from student 和 select name,address from where name='%%' and address='%%'
在什么情况下有区别?有什么区别?
[/Quote]
很明细的区别 有没有加条件 后面的如果建立了索引 会走索引 前面的是全表扫描
gelyon 2010-10-19
  • 打赏
  • 举报
回复
区别就是第一个会有结果集,有数据!
第二个没有结果集,因为你有条件,且条件是where name='%%' and address='%%'
而不是用like匹配!
wshi 2010-10-19
  • 打赏
  • 举报
回复
如果name,address 上面都有索引的话,select name,address from where name='%%' and address='%%' 将会走索引而不是全表扫描,速度会快很多
水中影子 2010-10-19
  • 打赏
  • 举报
回复
where后面语句可能会用到索引
iqlife 2010-10-19
  • 打赏
  • 举报
回复
区别是明摆着的啊,一个查询有条件,一个没有
name 和 address有索引下的情况下,速度一般来说会优于全表扫描,但是也未必一定走索引

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧