zoukankan      html  css  js  c++  java
  • Mysql常用sql语句(9)- like 模糊查询

    测试必备的Mysql常用sql语句系列

    https://www.cnblogs.com/poloyy/category/1683347.html

    前言

    • like应该是最常用的查询条件了
    • 必须滴掌握!

    like的语法格式

    LIKE  '字符串'
    NOT LIKE  '字符串'
    • NOT:取反,不满足指定字符串时匹配
    • 字符串:可以是精确的字符串,也可以是包含通配符的字符串
    • LIKE支持 % 和 _ 两个通配符

    确认测试表里有什么数据,方便后面的栗子做对比

    % 通配符查询的栗子

    •  % 应该是最常用的通配符了,它代表任意长度的字符串,包括0
    • 比如: a%b 表示以字母 a 开头,以字母 b 结尾的任意长度的字符串;该字符串可以代表 ab、acb、accb、accrb 等字符串

    查询username字段包含test的记录

    select * from yyTest where username like "%test%";

    查询username字段开头不为test且department字段不等于seewo的记录

    select * from yyTest where username not like "test%" and department = "seewo";

    知识点

    匹配的字符串必须加单引号或双引号 like "%test%" 

    _ 通配符查询的栗子

    • _ 只能代表单个字符,字符的长度不能等于0,即字符长度必须等于1;相对于 % 来说, _ 肯定没这么常用
    • 比如: a_b 可以代表 acb、adb、aub 等字符串

    查询username字段test开头且后面只跟一个字符结尾的记录

    select * from yyTest where username like "test_";

    like 区分大小写的栗子

    • 默认情况下,like匹配的字符串是不区分大小写的; like "test1" 和 like "TEST1" 匹配的结果是一样的
    • 如果需要区分大小写,需要加入 binary 关键字

    不会返回任何记录,test1和test2不会被匹配到

    select * from yyTest where username like binary "TEST_";

    使用转义符的栗子

    • 如果查询的字符串包含%,可以使用  转义符
    • 实际场景:搜索功能,搜索框只输入%看是否返回所有记录,如果是的话证明没有做转义可以提个优化项哦!

    转义符+通配符联合使用的栗子

    select * from yyTest where username like "%%"

    使用通配符的注意点

    • 注意大小写:不加binary关键字的话,大小写是不敏感的
    • 注意头部、尾部多余的空格: " test% " 是不会匹配到“test1”的
    • 注意NULL:通配符是不能匹配到字段为NULL的记录的
    • 不要过度使用通配符:因为Mysql对通配符的处理速度会比其他操作花费更长的时间
    • 在确定使用通配符后:除非绝对有必要,否则不要把它们用在字符串的开始处,把通配符置于搜索模式的开始处,搜索起来是最慢的。
  • 相关阅读:
    用node探究http缓存
    静态资源增量更新,转自美团
    前端调试相关
    写完此篇,开始新的征程!
    SSM整合
    SpringMVC
    Mybatis
    设计模式之代理模式
    设计模式之工厂模式
    设计模式之单例模式最佳实现方式
  • 原文地址:https://www.cnblogs.com/poloyy/p/12867778.html
Copyright © 2011-2022 走看看