SQL查询语句(四)模糊查询

       前文介绍的查询语句,无论是利用常规的数学运算符,还是IN,BETWEEN和EXISTS等范围查询关键字,本质上都属于精确查询的范围,也就是说,我们在条件中写明了完全限定死的条件。而有些场景,我们的条件并不是很明确,例如我们想要查找姓张的所有记录,又或者我们想要查找名字中@qq.com结尾的邮箱。对于这种查询需求,就需要用到SQL为我们提供的模糊查询的功能了。

目录

模糊查询

通配符

LIKE关键字

模糊查询使用建议


模糊查询

  • 通配符

        在讲模糊查询之前,我们需要先知道一个概念,那就是通配符所谓的模糊查询,其实就是指的条件模糊,就拿上面的例子来说:我们想查找姓张的所有记录,这个条件中,我们只要求名字的第一个字是张,至于找出来的记录中,张后面跟的是什么字,跟几个字,我们都不知道,这就是我们条件模糊的地方。

        通配符的作用就是,代替我们条件中不明确的地方。这样讲可能有点抽象,我们来用具体的例子来介绍SQL语句中用到的两个通配符:

  • 百分号(%)通配符:用来表示任意字符任意次数,举个例子:张%,它可以表示“张三”,“张四”,“张吗喽”等张姓任何一个名字(也可以表示单独一个字:“张”)。就是说只要是张开头,后面无论什么字,几个字(包括0个)都可以匹配。
  • 下划线(_)通配符:用来表示任意一个字符(可以叠加使用)比如:张_,它可以表示“张三”,“张四”,但它不可以是“张吗喽”。因为一个下划线(_)它能且只能表示一个字符,而“张吗喽”的张后面跟了两个字。

        下面我们来看看,在SQL语句中怎么使用通配符来实现我们模糊查询的目的。

  • LIKE关键字

        SQL语句中用于模糊查询的关键字是LIKE关键字,语法如下所示:

SELECT [column1,column2,***]
FROM [table]
WHERE [column] LIKE [表达式];

SELECT * FROM student
WHERE name LIKE '张%';

        上述SQL语句的作用就是:从student表中,找出名字张开头的所有记录。 

        同样,如果我们只想找出名字以“吗喽”结尾的,我们就可以这样写:

SELECT * FROM student
WHERE name LIKE '%吗喽';

         当然,如果我们不想找“欧阳吗喽”、“私密吗喽”,只想找“张吗喽”、“李吗喽”或者“熊吗喽”这种“吗喽”,我们就可以这样写:

SELECT * FROM student
WHERE name LIKE '_吗喽';

        以上就是SQL中模糊查询的语法。 

模糊查询使用建议

        如果我们需要用到SQL中的模糊查询功能,有以下几点需要注意:

  1. 不要过度使用通配符。模糊查询功能是有代价的,通常情况下使用通配符进行查询要比精确查找花费更多的资源和时间。因此如果能够利用其它操作符达到目的,尽量不适用模糊查询。
  2. 在一定需要使用通配符情况下,尽量避免左模糊查询。因为左模糊查询是模糊查询中速度最慢,效率最低的。所谓的左模糊查询,就是指将通配符放在表达式的最左边,比如我们上面例子中的 '_吗喽','%吗喽' 这些都属于左模糊,应该尽量避免。(这涉及到了更加深层次的概念:索引。后面介绍SQL优化的文章中我们会介绍)
  3. 一定要注意通配符放的位置,如果位置放错了可能不会返回你想要的数据。
熊吗喽
  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值