加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql常用sql语句(9)- like 模糊查询

发布时间:2020-12-12 02:13:48 所属栏目:MySql教程 来源:网络整理
导读:测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html ? 前言 like应该是最常用的查询条件了 必须滴掌握! ? like的语法格式 LIKE ' 字符串 ' NOT ' NOT:取反,不满足指定字符串时匹配 字符串:可以是精确的字符串,也可

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

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

?

前言

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

?

like的语法格式

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

?

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

?

% 通配符查询的栗子

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

查询username字段包含test的记录

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

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

not like "test%" and department = "seewo";

知识点

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

?

_ 通配符查询的栗子

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

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

like "test_";

?

like 区分大小写的栗子

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

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

like binary "TEST_";

?

使用转义符的栗子

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

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

%%"

?

使用通配符的注意点

  • 注意大小写:不加binary关键字的话,大小写是不敏感的
  • 注意头部、尾部多余的空格:?" test% "?是不会匹配到“test1”的
  • 注意NULL:通配符是不能匹配到字段为NULL的记录的
  • 不要过度使用通配符:因为Mysql对通配符的处理速度会比其他操作花费更长的时间
  • 在确定使用通配符后:除非绝对有必要,否则不要把它们用在字符串的开始处,把通配符置于搜索模式的开始处,搜索起来是最慢的。

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读