首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 类似like的函数

基础概念

MySQL中的LIKE操作符用于在WHERE子句中进行模糊匹配。它允许你使用通配符来搜索列中的指定模式。LIKE操作符通常与%(表示任意数量的字符)和_(表示单个字符)一起使用。

相关优势

  • 灵活性LIKE操作符提供了灵活的搜索模式,可以匹配多种不同的字符串。
  • 简单易用:语法简单,易于理解和实现。

类型

  • 精确匹配:不使用通配符,直接匹配字符串。
  • 模糊匹配:使用%_进行模式匹配。

应用场景

  • 搜索用户输入:在用户输入搜索关键词时,使用LIKE进行模糊匹配,找到相关记录。
  • 数据验证:在插入或更新数据时,使用LIKE进行格式验证。

示例代码

代码语言:txt
复制
-- 精确匹配
SELECT * FROM users WHERE username = 'john_doe';

-- 模糊匹配
SELECT * FROM users WHERE username LIKE '%john%';
SELECT * FROM users WHERE username LIKE 'john_';

遇到的问题及解决方法

问题:性能问题

原因:当数据量较大时,使用LIKE进行模糊匹配可能会导致性能下降,因为MySQL需要扫描整个表来找到匹配的记录。

解决方法

  1. 使用索引:在经常用于LIKE查询的列上创建索引,可以显著提高查询性能。
  2. 使用索引:在经常用于LIKE查询的列上创建索引,可以显著提高查询性能。
  3. 优化查询:尽量避免使用前导通配符(如'%john'),因为这会导致索引失效。
  4. 全文搜索:对于更复杂的搜索需求,可以考虑使用MySQL的全文搜索功能。
  5. 全文搜索:对于更复杂的搜索需求,可以考虑使用MySQL的全文搜索功能。

问题:大小写敏感性

原因:默认情况下,MySQL的LIKE操作符是大小写敏感的。

解决方法

  1. 使用BINARY关键字:强制进行大小写敏感的匹配。
  2. 使用BINARY关键字:强制进行大小写敏感的匹配。
  3. 修改字符集和排序规则:将列的字符集和排序规则设置为不区分大小写的版本。
  4. 修改字符集和排序规则:将列的字符集和排序规则设置为不区分大小写的版本。

参考链接

希望这些信息对你有所帮助!如果有更多问题,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL LIKE 子句

昨天介绍了 MySQL 数据库使用 DELETE 语句来删除数据,今天主要讲解下 MySQL LIKE 子句。...LIKE 子句是在 MySQL 中用于在 WHERE 子句中进行模糊匹配关键字。它通常与通配符一起使用,用于搜索符合某种模式字符串。...LIKE 子句中使用百分号 % 字符来表示任意字符,类似于UNIX或正则表达式中星号 *。 如果没有使用百分号 %, LIKE 子句与等号 = 效果是一样。 语法 首先,介绍一下语法。...你可以在 WHERE 子句中使用LIKE子句。 你可以使用LIKE子句代替等号 =。 LIKE 通常与 % 一同使用,类似于一个元字符搜索。 你可以使用 AND 或者 OR 指定一个或多个条件。...在使用时,请确保理解通配符含义,并根据实际情况进行匹配。 以上内容即为 MySQL 数据库使用 LIKE 子句简单讲解,下期再见。

14110

mysql like性能优化

网上很多优化like方法,无非下面几种,抄来抄去。...我用213万条数据,每条数据50个字段左右(用真实生产环境mysql数据库,和真实生产环境数据),做了性能测试;时间记录次数不多,但是基本都做了10次左右,时间误差不大,就只记录了3次,结果如下...: 结论: 1.LOCATE,INSTR,REGEXP三个函数,效果在like面前没有任何优势。...3.like,如果要用,那用左匹配,效果是最好,因为可以用上索引,其他方式,索引会失效,速度自然很低。 4.并没有发现什么有效优化方式。...`ent_name` LIKE CONCAT('奥斯','%'); -- 表级锁 情况 SHOW STATUS LIKE 'table%'; -- 行级锁 情况 SHOW STATUS LIKE

4.5K30
  • Mysql 模糊查询 like 语句

    mysql模糊查询like语句 like语句用于模糊查询符合条件语句 %代表 若干个字符 _代表一个单词 查询使用like语句语法是: select 字段名 from 表名 where 字段名...like '需要模糊查询对象' 如果需要查询第二位字母是q字段,那么like后面可以跟'_q%' 如果需要模糊查询字符当中有'_',那么可以使用转义字符。...如果需要查询第二位字符是_字段,那么like后面可以跟 '__%' 例如,我们现在有如下一张表 +-------+--------+----------+------+------------+-...-----+--------+----------+------+------------+---------+---------+--------+ 如果我们需要查询姓名中第二个字母为'M' 的人姓名时候...select ename from emp where ename like '_m%'; 使用上述语句查询结果为 +-------+ | ename | +-------+ | SMITH | +-

    5.2K30

    sql mysql like查询使用索引

    在使用msyql进行模糊查询时候,很自然会用到like语句,通常情况下,在数据量小时候,不容易看出查询效率,但在数据量达到百万级,千万级时候,查询效率就很容易显现出来。...这个时候查询效率就显得很重要! 结论:后置百分号可以用到索引,前置百分号和两侧百分号用不了索引。...一般情况下like模糊查询写法为(field已建立索引): SELECT `column` FROM `table` WHERE `field` like '%keyword%'; 上面的语句用explain...解释来看,SQL语句并未用到索引,而且是全表搜索,如果在数据量超大时候,可想而知最后效率会是这样 对比下面的写法: SELECT `column` FROM `table` WHERE `field...` like 'keyword%'; 这样写法用explain解释看到,SQL语句使用了索引,搜索效率大大提高了!

    3.6K20

    sql 之like 和通配符%,_(mysql

    我们忘记了他名字,只记得他姓名,那么我们就可以使用like加上通配符来查询出我们所要结果;话说回来,啥是通配符?通配符等下再说,等下就懂了。...我们再举一个例子:例如我们有一本书叫做《小明喜欢吃猪肉》,可是我忘记了 别的,我想查询一本书里面有喜欢这个词该怎么办?好了,那么我们也可以使用like来实现。好了,废话不多数,我们看下面的例子。...那么看如下语句: SELECT * FROM table1 WHERE name1 LIKE ‘李%’; 首先,我们在语句最后面使用 LIKE ‘李%’,在这里我们使用了like操作符,后面单引号就是我们条件...条件中李,代表着我们要查询字符串开头,后面的%号就是我们通配符。在这里,通配符可以替代一个或多个字符,通配符必须与 LIKE 运算符一起使用。...那么使用如下查询语句即可: SELECT * FROM table1 WHERE name1 LIKE ‘%喜欢%’; 结果如下: ? 如果我们想查询以下表中小花人呢?

    2.8K30

    MySQL前缀索引及Oracle类似实现

    其实,Oracle也有类似的实现,对于文本,它可以通过substr函数索引,实现同样甚至更多功能。另外,经过探索,我们发现,原来数字和时间字段,在Oracle也可以实现类似的功能。...MySQL前缀索引 MySQL前缀索引指的是对指定栏位前面几位建立索引。...Oracle类似实现 从前面的做法中,我们可以发现,前缀索引本质上就是把栏位前N位作为索引,这个看起来,很像Oracle函数索引。...类似于: Create index index_name on table_name(substr(column_name,1,) ); 对于Oracle函数索引,我们一个比较深印象就是...,where条件必须和函数索引里表达式一致,才能利用上函数索引。

    1.7K50

    mysql优化篇:where中like和=性能分析

    那好奇小伙伴可能就要问了,那执行过程呢?mysql不管是遇到like还是'='时执行过程也都是一样么? ?...mysql优化篇:where中like和=性能分析 没错,事情不能只看表面,如果你细心研究,就会发现其实like和等于号'='并不是那么简单,下面我们将详细分析他们两者真正区别~~~ 二、正文...mysql优化篇:where中like和=性能分析 那我们来使用explain测试一下like和=下查询情况,首先我们来测试一下为索引字段: EXPLAIN SELECT * FROM...mysql优化篇:where中like和=性能分析 有的小伙伴该问了那非索引字段呢?...mysql优化篇:where中like和=性能分析 like: ? mysql优化篇:where中like和=性能分析 可以看出当非索引字段时like和"="是一样,性能上也没有差别。

    1.7K30

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

    测试必备Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 like应该是最常用查询条件了 必须滴掌握!...like语法格式 LIKE '字符串' NOT LIKE '字符串' NOT:取反,不满足指定字符串时匹配 字符串:可以是精确字符串,也可以是包含通配符字符串 LIKE支持 和 _ 两个通配符...知识点 匹配字符串必须加单引号或双引号 like "%test%" _ 通配符查询栗子 只能代表单个字符,字符长度不能等于0,即字符长度必须等于1;相对于 % 来说, _ 肯定没这么常用 _...like 区分大小写栗子 默认情况下,like匹配字符串是不区分大小写; 和 like "TEST1" 匹配结果是一样 like "test1" 如果需要区分大小写,需要加入 关键字 binary...注意头部、尾部多余空格: 是不会匹配到“test1” " test% " 注意NULL:通配符是不能匹配到字段为NULL记录 不要过度使用通配符:因为Mysql对通配符处理速度会比其他操作花费更长时间

    2.8K20

    MySQL 模糊查询再也不用 like+% 了!

    干货及时送达 作者:沸羊羊 来源:juejin.cn/post/6989871497040887845 前言 我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样需求还有很多...在早期 MySQL 中,InnoDB 并不支持全文检索技术,从 MySQL 5.6 开始,InnoDB 开始支持全文检索。最新 MySQL 面试题整理好了,点击Java面试库小程序在线刷题。...ENGINE=InnoDB; 输入查询语句: SELECT table_id, name, space from INFORMATION_SCHEMA.INNODB_TABLES WHERE name LIKE...( title, body ) AGAINST ( 'MySQL' ); 上述语句,查询 title,body 列中包含 'MySQL' 关键字行数量。...* :表示以该单词开头单词,如 lik*,表示可以是 lik,like,likes " :表示短语 下面是一些demo,看看 Boolean Mode 是如何使用

    6.5K30

    MySQL 模糊查询再也不用like+%了

    前言 我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样需求还有很多。...ENGINE=InnoDB; 输入查询语句: SELECT table_id, name, space from INFORMATION_SCHEMA.INNODB_TABLES WHERE name LIKE...MATCH ( title, body ) AGAINST ( 'MySQL' ); 上述语句,查询 title,body 列中包含 'MySQL' 关键字行数量。...* :表示以该单词开头单词,如 lik*,表示可以是 lik,like,likes " :表示短语 下面是一些 demo,看看 Boolean Mode 是如何使用。...InnoDB 全文检索在一些简单搜索场景下还是比较实用,可以替代 like+%,并且不需要额外依赖其他服务。复杂搜索场景的话,我们还是需要使用 ES 这类搜索引擎。

    23210

    其实 MySQL like 关键字也能用索引!

    上篇文章中,松哥和大家分享了索引两个使用规则: 索引上不要使用函数运算。 使用覆盖索引避免回表。 当然,凡事有个度,用哪一种策略也要结合具体项目来定,不能为了 SQL 优化而抛弃了业务。...今天,松哥在前文基础上,再来和大家分享一条索引规则,一起来学习下。 我们常说,MySQL like 要慎用,因为会全表扫描,这是一件可怕事!...,结构类似下面这样: username age a 88 b 89 c 89 c 90 c 99 d 88 d 99 所以当想要搜索以 j 开头 username 时,只需要定位到第一个以 j 开头...回顾第一小节最后 like '%j' 和 like '%j%' 执行计划,不就是上面这个吗!...最后 Extra 为 Using where 表示 MySQL 首先从数据表(存储引擎)中读取记录,返回给 MySQL server 层,然后在 server 层过滤掉不满足条件记录。 3.

    3.3K20
    领券