Where子句常用操作符

处理大量数据过滤,或是需要从海量数据中寻找我们需要的数据时,where子句的过滤是必不可少的,以下是基础常用的操作符。

首先需要知道sql中是允许多个where子句的,也就是where后可以接上很多的操作语句,通常会使用and或是or来连接多条子句。

1.and与or使用

And:并列关系,同时生效的条件。

Or:符合任一子句的条件即可。

同时使用时需要注意:and优先级要高于or。

例如语句1:从员工表中查询地区在上海或是北京,职位M1的员工姓名。

select  name  from   empl  where  area='上海'  or  area='北京'   and   rank='M1'

此时语句释义为:查询地区为北京且职级为M1的员工,或地区为上海的员工姓名。显而易见,这不是我们需要的结果。

要达到语句1的结果应该这样写:select  name  from   empl  where  (area='上海'  or  area='北京' )  and   rank='M1'

使用圆括号把or两个两条括起来,这样就会先处理括号里的语句,再执行and语句。优先级是这样:圆括号>and>or。

2.in与not

in:指定条件范围,符合范围内的数据。

语法:in  ('条件1','条件2','条件3')

not:总是与其他操作符搭配使用的,作用是否定其后所跟的任何条件。

例如:not  in ('条件1','条件2','条件3')

与运算符 != 或是 <> 表达的意思相同,不同的是,not  in只需要一条操作语句即可,运算符则需要多个and语句来阐明多个条件。

3.like操作符(通配符%,下划线_,方括号[[])

like操作符,也就是常说的模糊查询了,使用like操作符与通配符搭配使用,查询含有某字符的数据。

语句1:select  name  from   empl  where  name like '张%'

语意:查询所有name中以张起头的员工信息。%匹配多个字符。

语句2:select  name  from   empl  where  name like '%张%'

语意:查询所有name中含有张字的员工信息。

语句3:select  name  from   empl  where  name like '张_'

语意:查询所有name中姓名为两个字且以张字开头的员工信息。_匹配单个字符。

语句4:select  name  from   empl  where  name like '[张杨]%'

语意:查询所有name中以张或是杨字起头的员工信息。

语句5:select  name  from   empl  where  name like '[^张杨]%'

语意:查询所有name中不是张或杨字起头的员工信息。^脱字号,用来否定此条件。

       使用总结:

       方括号匹配字符集的形式,目前接触到的数据库只有sql server支持集合,其他如mysql,oracle,db2等都不支持。

       %可以匹配0字符,但不能匹配空格,不会匹配null值。需要注意有些dbms中的数据存储形式,会有使用空格补充字符长度的情况,一般会在末尾再加一个%用来排除有空格存在的情况,或是先用函数处理空格等。

        _匹配单个字符,也可以与%连接使用。全看具体的查询要求。

    在实际使用中应该减少通配符的使用,因为这个会增加搜索的消耗,增加查询的时间,在其他的操作符能替代的情况下,尽量减少使用通配符。不可避免的时候,注意选择正确的通配符,以及它的位置,确保查询出来的是符合要求的数据。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值