在项目开发中,我们会需要实现搜索的功能,那么我们就要通过sql语句中的like操作符来实现模糊查询了。
通配符分类
%百分号通配符:匹配0个或任意多个字符_下划线通配符:只能匹配1个字符
like操作符
通过like操作符与通配符的组合,我们可以实现模糊查询的功能。当我们使用like操作符进行模糊查询的时候,它的查询效率是会比正常查询慢的。这也是可以理解的,模糊查询需要执行额外的算法。
这里提醒一下:如果我们如果没有使用通配符的话,like操作符的作用其实就和 = 一样。如下:
select * from essay where title like 'change';
上面这条sql语句,我们没有使用任何通配符,所以它的作用实际就等同于下面的语句:
select * from essay where title = 'change';
% 百分号通配符的使用
查询title以chan开头的记录
select * from essay where title = 'chan%';
查询title包含有chan的记录
select * from essay where title = '%chan%';
查询title包含以chan结尾的记录
select * from essay where title = "%chan";
_ 下划线通配符的使用
匹配title类似change的记录
select * from essay where title = `chan__`;
注意事项
- MySQL可能是区分大小写,也可以不区分大小写,这个取决于MySQL的具体配置。如果区分大小写的话,那么
select * from essay where title = "%chan"这条语句是匹配不到asChan这样的字符串。 %百分号通配符可以匹配任意字符,但是它是匹配不到NULL的。也就是说它是匹配不到title数据列值为NULL的记录。- 使用
like 'chan_'或like 'chan%',模糊搜索也是会用到索引的,但还是会比普通查询要慢。但是like '%chan%'这样,它没有用到索引,每次查询都需要进行一次全表查询,可想而知,它的效率是非常低的。 - 使用like操作符进行模糊查询的时候,在小数据场景还是可以的。但在大数据情况下,它的查询效率是很低的。因此,在大数据情况下,推荐使用搜索引擎,如Solr。