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

news/2024/5/20 7:36:36

       前文介绍的查询语句,无论是利用常规的数学运算符,还是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. 一定要注意通配符放的位置,如果位置放错了可能不会返回你想要的数据。
熊吗喽

http://www.mrgr.cn/p/11817306

相关文章

Pikachu 靶场 CSRF 通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台,用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境,供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术,…

[转帖]ldap配置系列三:grafana集成ldap

https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_liunx_51_ldap_for_grafana.htmlgrafana的简介grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观。给一个官方的demo体验地址: https://play.grafana.org/d/000000012/grafan…

识货小程序逆向

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872,x30184483x…

UE5材质基础(2)——数学节点篇

UE5材质基础(2)——数学节点篇1 目录 UE5材质基础(2)——数学节点篇1 Add节点 Append节点 Abs节点 Subtract节点 Multiply节点 Divide节点 Clamp节点 Time节点 Lerp节点 Add节点 快捷键:A鼠标左键 值相加…

Hive SQL Join连接操作用法详解

Hive SQL Join连接操作 1.Hive join语法规则 基本语法: SELECT column_list FROM table1 JOIN table2 ON table1.column_name table2.column_name;JOIN类型: 在JOIN语句中,你可以使用不同类型的JOIN操作,包括INNER JOIN、LEFT O…

恋爱中的Java多线程:从单身到共舞的浪漫指南(一)

引言:孤独的线程,寂寞的码农 开篇小剧场: ​ 深夜,孤独的程序猿凯叔接到新任务:优化程序性能,探索多线程。这一任务成了他跳出孤独、寻求生活并行美好的契机。从简单的Thread类到复杂的线程池管理&#xff…

【汇总】虚拟机网络不通(Xshell无法连接虚拟机)排查方法

搜索关键字关键字关键字:虚拟机虚拟机虚拟机连接失败、虚拟机无法连接、Xshell连接失败、ping baidu.com失败、静态IP设置 Kali、CentOS、远程连接 描述:物理机无法连接虚拟机;虚拟机无法访问百度,虚拟机无法访问baidu.com 虚拟机…

C# WCF服务(由于内部错误,服务器无法处理该请求。)

由于内部错误&#xff0c;服务器无法处理该请求。有关该错误的详细信息&#xff0c;请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端&#xff0c;或打开对每个 Microsoft .NET …

为 Flutter 应用设置主题:ThemeData 和 ColorScheme 指南

在媒体和其他来源中有许多关于这个主题的文章&#xff0c;那么这篇文章的必要性是什么&#xff1f; 在本文中&#xff0c;我计划仅关注 ThemeData 小部件的关键点以及我的开发经验中最常用的参数&#xff0c;并且您将获得有关每个参数如何对您的应用程序执行操作的简要说明。 …

Linux:进程信号

生活角度的信号 a.信号在生活中&#xff0c;随时可以产生(信号的产生和我是异步的) b.你能认识这个信号 c.我们知道信号产生了&#xff0c;我能识别这个信号&#xff0c;信号该怎么处理 d.我们可能正在做着更重要的事情&#xff0c;把到来的信号暂不处理(1.我记得这个事 2.…

分布式 ID 的实现方案——Java全栈知识(13)

分布式 ID 的实现方案 当我们分表的情况下&#xff0c;如何实现全局唯一 ID 也是一个问题&#xff0c;数据库的唯一索引在 分布式 ID 也就是全局唯一 ID 生产方案需要满足以下几个条件&#xff1a; 高可用高性能安全性自增性唯一性 1、UUID UUID&#xff08;Universally Un…

cobalt strike安装教程

将本地IP和密码填入:./teamserver 192.168.xx.xx 密码 启动成功

初识C语言——第十五天

初识结构体1 //结构体可以让C语言创建新的类型出来 //创建一个学生struct Stu {char name[20];int age;double score;}; //创建一个书的类型 struct Book {char name[20];float price;char id[30]; };//int main() //{ // struct Stu s { "张三",20,85.5 };//结…

You don’t have permission.

The document “XXX” could not be saved. You don’t have permission. 1.查看修改了iOS系统库导致的, 根据提示, 进入到"XXX"文件中, 然后commandz回退/取消 2. Xcode 调试遇到的报错&#xff08;持续更新&#xff09;

WDS+MDT网络启动自动部署windows(十七)MDT中文变量,描述,组织单位OU

简介 这简直就是歧视,在MDT使用变量时,数据库设置时,居然不能用中文。 计算机描述,我将在数据库中设置为使用人,主要是其他地方也不方便看。 描述是存在注册表中的,未来自动化也将会使用使用人这个字段,用来注册OCS这样,有标签,使用人字段的软件。 方向 解决MDT/BDD无…

蓝桥杯练习系统(算法训练)ALGO-950 逆序数奇偶

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 老虎moreD是一个勤于思考的青年&#xff0c;线性代数行列式时&#xff0c;其定义中提到了逆序数这一概念。不过众所周知我们…

【Linux】17. 进程间通信 --- 管道

1. 什么是进程间通信(进程间通信的目的) 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了…

刷题训练之模拟

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握模拟算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷题训…

Ansible——playbook编写

一、简介 1.什么是playbook Ansible Playbook 是设定自动化任务的一种蓝图&#xff0c;可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。 Ansible Playbook 本质上是一些框架&#xff0c;是一些预先编…

pytest教程-41-钩子函数-pytest_runtest_teardown

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_runtest_call钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_runtest_teardown钩子函数的使用方法。 pytest_runtest_teardown 钩子函数在每个测试用例执行完成后被调用&…