zoukankan      html  css  js  c++  java
  • class09_高级过滤数据

    高级过滤数据

    使用通配符过滤数据

    一种高级的数据过滤方法

    使用通配符过滤数据:关键字:LIKE

    例如:

    如何取出所有姓陈的同学?

    知道老师的身份证号,想取出70年代出生的所有老师

    百分号%匹配 0~多个字符
    下划线_ 匹配1个任意字符
    方括号[]、[^] 匹配1个字符集中的字符

    PS:基本所有数据库都支持百分号通配符和下划线通配符,但只有很少的数据库支持方括号通配符。

    SELECT * from student where stu_name LIKE '刘%' ;//所有姓刘的同学
    SELECT * from student where stu_name LIKE '刘_' ;//所有姓刘两字同学
    SELECT * from student where stu_name LIKE '刘__' ;//所有姓刘三字同学
    SELECT * from student where stu_name LIKE '%杰' ;//名字以杰结尾的同学
    SELECT * from student where stu_name LIKE '周_杰' ;//名字是三个字,以杰结尾的同学
    SELECT * from student where stu_name LIKE '周%杰' ;//名字开头是周,以杰结尾,中间0~无穷字的同学
    注意:下面的写法mysql均不支持:
    SELECT * from student where stu_id LIKE 'S200[678]' ;// 取出S2006、S2007、S2008的同学
    SELECT * from student where stu_id LIKE 'S200[^678]' ;//取出除了S2006、S2007、S2008的同学

    使用通配符的注意点:

    1. 不要过度使用通配符;【执行效率不高】

    2. 如果确实需要使用,也尽量不要把通配符用在匹配模块的开始处;

    3. 要特别注意通配符的位置,否则很有可能返回的结果与预期不一致;

     

    组合WHERE子句

    如何使用复杂条件筛选数据

    使用逻辑操作符组合WHERE子句:

    AND操作符满足所有条件
    OR操作符 满足任一条件

    例如:

    取出所有姓陈同学:

    SELECT * FROM student WHERE stu_name LIKE '陈%' AND gender = '男';

    取出所有姓陈的同学或同学

    SELECT * FROM student WHERE stu_name LIKE '陈%' OR gender = '男';

    取出所有年龄大于15岁并且姓陈男性同学:

    SELECT * from student where age > 15 and (stu_name LIKE '%陈' OR gender = '男'); 

    注意:

    • 在sql语句中 ANDOR 优先级相同

    • AND、OR谁在前面先执行谁

    • 在条件比较多的时候选用合理的()来消除歧义

  • 相关阅读:
    9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路(转)
    Path Sum(参考别人,二叉树DFS)
    tcp/ip
    常见Unix指令
    Pascal's Triangle II
    Implement strStr()
    LeetCode总结
    从LLVM源码学C++(一)
    面试题:1到N中,1出现的次数
    面试题:数组划分成两个子数组,和的差值的绝对值最小
  • 原文地址:https://www.cnblogs.com/77-is-here/p/12799449.html
Copyright © 2011-2022 走看看