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谁在前面先执行谁

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

  • 相关阅读:
    Mybatis各种模糊查询
    ORACLE查询当前资产状态,和另一个数据库联查,(查询重复数据中第一条),子查询作为字段查询
    驱动文件操作
    驱动开发中使用安全字符串函数
    驱动开发 判断内存是否可读 可写
    驱动模式使用__try __excpet
    简单解释Windows如何使用FS段寄存器
    手动载入NT驱动
    PUSHA/PUSHAD
    跳转指令公式计算 HOOK
  • 原文地址:https://www.cnblogs.com/77-is-here/p/12799449.html
Copyright © 2011-2022 走看看