【mysql学习】7.通配符匹配(模糊查询)

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【mysql学习】7.通配符匹配(模糊查询),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

        这一篇文章中我们将使用LIKE操作符进行模糊查询,对数据进行复杂的过滤操作。


目录

准备工作

通配符过滤

百分号(%)通配符

下划线(_)通配符 

通配符注意事项 

总结


准备工作

        如何使用数据库我就不再赘述了,我们这次要使用到的表是food表,对应的sql语句如下

create table food(id int primary key auto_increment,
		name varchar(32) not null,
		price float,
		fdescribe varchar(100));
insert into food values(null,'红烧肉','38','这个好吃');
insert into food values(null,'手抓羊肉','150','这个非常好吃');
insert into food values(null,'养生杂粮糕','45','这个好吃   ');
insert into food values(null,'四喜丸子','55',null);
insert into food values(null,'羊肉粉丝煲','100','真好吃');
insert into food values(null,'粤式白灼基围虾','66','真的好吃');
insert into food values(null,'杭椒牛柳','120','真美味');
insert into food values(null,'古法焖石鸡','80','真的好美味');
insert into food values(null,'宫保鸡丁a','31','这个好吃~');
insert into food values(null,'宫保鸡丁A','32','这个好吃~');

        成功创建表后输入select * from food;查看数据是否插入成功,如果显示如下,那么我们的准备工作就完成了。

【mysql学习】7.通配符匹配(模糊查询)


通配符过滤

        我们要想对数据进行模糊查询,那么我们需要使用关键字LIKELIKE位于WHERE的后面对数据进行过滤,like后面跟着的就是想要查询的数据片段,在mysql中,我们通过 和 来进行修饰。注意:LIKE只能用于文本字段(也就是字符串)


百分号(%)通配符

        如果大家学过正则表达式的话,那么应该就知道%怎么使用了,%就是用来表示0个或多个字符

        我们使用%来查询所有名字里面以肉结尾的菜。

select * from food where name like '%肉';

【mysql学习】7.通配符匹配(模糊查询)

         我们使用%很轻松就实现了功能,‘%肉’就表示以肉结尾,前面有0个或者多个字符。

        记不记得我们在前面的文章中说过,mysql不区分大小写,如果我们使用通配符区不区分大小写呢?我们来验证一下。

 select * from food where name like '%a';

【mysql学习】7.通配符匹配(模糊查询)

         我们发现我们匹配以a结尾的,结果A结尾的也匹配出来了,所以mysql使用通配符不区分大小写

select * from food where fdescribe like '%好吃';

         上面这2条语句很简单吧,第一条就是匹配所有以好吃结尾的描述,我们来查询一下。

【mysql学习】7.通配符匹配(模糊查询)

【mysql学习】7.通配符匹配(模糊查询)

         我们发现查询出来就只有四条数据,但是我们查询全部却发现有5条数据,其实,这是因为有一条数据后面有空格造成的,对于空格造成的影响,我们再后面会使用函数来解决,这里就先提出这个问题。

 select * from food where fdescribe like '%';

         上面的语句大家可以知道是上面意思吗,其实就是匹配所有信息,以为%代表0或者多个嘛。我们来执行一下。

【mysql学习】7.通配符匹配(模糊查询)

         结果查询出来少了一条数据,我们使用select * from food;查询出来的数据如下:

【mysql学习】7.通配符匹配(模糊查询)

         这也就说明了我们使用%时并不会匹配NULL。


下划线(_)通配符 

        我们上面学习了%,现在我们来学习_,_表示匹配一个字符,使用和%是一样的,就把它看成一个占位符就行了。

        我们先来查询一下所有以好吃结尾的描述

select * from food where fdescribe like '%好吃';

【mysql学习】7.通配符匹配(模糊查询)

         发现有四条记录,下面我们来查询好吃前面只有1个字符的描述。

select * from food where fdescribe like '_好吃';

【mysql学习】7.通配符匹配(模糊查询)

        发现就只有一条数据,下面我们再来查询好吃前面有2个字符的描述。 

 select * from food where fdescribe like '__好吃';

【mysql学习】7.通配符匹配(模糊查询)

         查询出来2条数据,都和我们想象的一样,对于空格问题,_和%是一样的,这里就不在赘述了。对于NULL的问题,_和%也是一样的,大家可以自己尝试一下。


通配符注意事项 

  • 不要过度使用通配符,如果可以使用其他替代,那么我们应该就使用其他的操作符
  • 使用通配符,我们尽量往where的后面放,因为通配符匹配会花大量的时间进行过滤
  • 要注意通配符的位置,不要放错地方,位置错了,可能会得到数据,但往往是错的

总结

        通配符是一种重要的搜索方式,我们对数据库进行数据查找时会经常用到它,但是通配符的效率确实不快,我们也应当再必要时才使用,不要使用过度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146340.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!