4.4 like通配符关键字过滤查询数据

news2024/11/16 2:31:38

文章目录

  • 1.概述
  • 2.LIKE关键字
  • 3.百分号(%)通配符
    • 3.1 单个百分号(%)通配符
    • 3.2 多个百分号(%)通配符
    • 3.3 在值的中间使用百分号(%)通配符
    • 3.4 注意事项
  • 4.下划线(_)通配符
  • 5.使用通配符的技巧


1.概述

通配符是用来匹配值的一部分的特殊字符;

本小节介绍如何使用通配符以及怎样使用LIKE关键字进行通配搜索,以便于对数据进行复杂过滤;

2.LIKE关键字

前面介绍过所有操作符都是针对已知值进行过滤的,不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共同点是过滤中使用的值都是已知的。

但是这种过滤方法并不是任何时候都好用。例如,搜索产品名中包含文本anvil的所有产品时,用简单的比较操作符肯定是不行的,必须使用通配符。

利用通配符可以创建比较特定的搜索模式,在这个例子中,如果你想找出名称中包含anvil的所有产品,可以构造一个通配符搜索模式,找出产品中任何位置出现anvil的产品。

为在搜索子句中使用通配符,需要使用LIKE关键字,LIKE指示MySql后跟的搜索模式使用通配符匹配,而不是直接相等匹配进行搜索。

3.百分号(%)通配符

最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意次数。

3.1 单个百分号(%)通配符

例如,为了找出所有以jet开头的产品,可以使用下列SQL:

输入:

SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE 'jet%';

输出:
在这里插入图片描述

此例子使用了搜索模式 ‘jet%’。在执行子句时,将查询任意以jet开头的词,不管后续有多少字符,什么字符,%都告诉SQL匹配它;

3.2 多个百分号(%)通配符

通配符可以在搜索模式中的任意位置使用,并且可以使用多个通配符。下列的例子将使用俩个通配符,且位于模式的俩端:

输入:

SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE '%anvil%';

输出:
在这里插入图片描述

此例子使用了搜索模式 ‘%anvil%’。在执行子句时,%通配符告诉SQL将匹配任意位置文本包含 anvil 的值,而不论 anvil 之前或之后出现什么值,出现多少值,哪怕是没有,以anvil开头的也匹配;

3.3 在值的中间使用百分号(%)通配符

通配符也可以使用在搜索模式的中间,虽然这没什么用,例如下列例子中,查找以s开头,e结尾的产品:

输入:

SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE 's%e';

输出:
在这里插入图片描述

3.4 注意事项

使用百分号(%)通配符时需要注意:

  1. 注意百分号(%)通配符能匹配任意多的字符,哪怕是0个也是匹配的;
  2. 注意百分号(%)通配符使用时字符出现空格,尤其是尾空格,如 WHERE prod_name LIKE ‘%anvil’ 中如果查询的数据anvil后跟着一个空格,那么将不匹配它,因为在SQL中 anvil 与 anvil加一个空格,代表不一样的含义,你可以在尾部也增加一个通配符,或者通过后期学习的函数去处理数据;
  3. 要特别注意NULL值,虽然百分号(%)通配符可以匹配任意字符,但是NULL并不代表任何字符,使用通配符没有任何办法可以匹配它,只能通过 IS NULL 来查询;

4.下划线(_)通配符

另外一个有用的通配符就是下划线(_)。

下划线(_)的用途与%通配符一样,但下划线只能匹配一个字符,而不是多个。

输入:

SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE '_ ton anvil';

输出:
在这里插入图片描述

此WHERE子句的搜索模式给出了后面跟有文本的通配符。结果只显示匹配搜索模式的行,第一行中下划线匹配字符1,第二行中下划线匹配字符2;

. 5 ton anvil 产品没有匹配,因为搜索模式要求匹配俩个通配符,而不是一个。对比下列使用%通配符的结果,即可直观了解俩者的差别:

输入:

SELECT prod_id,prod_name
FROM products
WHERE prod_name LIKE '% ton anvil';

输出:
在这里插入图片描述

甚至去掉%后跟着的括号也是同样的结果;

与%不同的就是,_只能匹配一个字符,不能多也不能少;

5.使用通配符的技巧

虽然通配符很有用,但是使用通配符花费的时间要比前序介绍的查询方法都长,所以日常使用通配符时,要注意以下事项:

  1. 不要过度使用,能用其他方式达到同样效果的,优先选择其他方式;
  2. 在必须要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处,这样会导致搜索的效率是最慢的;
  3. 要注意通配符使用时放置的位置,位置错误会导致查询结果可能不是你想要的;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7 配置samba

samba概述: Windows与Linux之间通信的桥梁,Samba是一个非常强大的文件服务器。Samba端口:udp 137 udp138,tcp139 tcp445。Samba工作模式:C/S模式(客户端-服务器) samba应用环境 1、文件共享&…

python库--urllib

目录 一.urllib导入 二.urllib爬取网页 三.Headers属性 1.使用build_opener()修改报头 2.使用add_header()添加报头 四.超时设置 五.get和post请求 1.get请求 2.post请求 urllib库和request库作用差不多,但比较起来request库更加容易上手,但该了…

SpringCloud学习笔记 - 分布式系统全局事务管理 - Seata1.5.2+Nacos+OpenFeign

1. Seata 是什么? 由于业务和技术的发展,单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务来保证, 但是全…

【跟着ChatGPT学深度学习】ChatGPT带我学情感分析

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

5G+车联网按下加速键,这家企业已经走在行业前列

进入2023年,5G车联网进入了快速增长阶段,并且正在逐步替代4G的存量市场。 为了更好地满足5G车联网市场的需求,移远通信正式推出了符合3GPP Release 16标准的车规级5G NR模组AG59x系列。据了解,全新的产品在5G传输速度、低时延、高…

SpringBoot addResourceHandlers 代理静态资源无法访问 Java获取linux文件中文名乱码 Linux设置中文字符集

SpringBoot addResourceHandlers 代理静态资源无法访问 Java获取linux文件中文名乱码 linux设置中文字符集Windows中使用SpringBoot addResourceHandlers代理静态资源访问Linux中使用SpringBoot addResourceHandlers代理静态资源访问修改路径问题一度以为Linux不能用这种方式代…

概念解读稳定性保障

什么是稳定百度百科关于稳定的定义:“稳恒固定;没有变动。”很明显这里的“稳定”是相对的,通常会有参照物,例如 A 车和 B 车保持相同速度同方向行驶,达到相对平衡相对稳定的状态。那么软件质量的稳定是指什么呢&#…

区块链对于底层技术的助力和改造,导致了如此多的新技术、新模式的出现

现在,区块链就在经历这样一种状态。是的,我们现在看到的是,以人工智能为代表的诸多新技术的不断地成熟和落地,我们现在看到的是,以元宇宙为代表的诸多新模式的不断衍生和出现。但是,如果深度分析&#xff0…

对称锥规划:锥与对称锥

文章目录对称锥规划:锥与对称锥锥的几何形状常用的指向锥Nonnegative Orthant二阶锥半定锥对称锥对称锥的平方操作对称锥的谱分解对称锥的自身对偶性二阶锥规划SOCP参考文献对称锥规划:锥与对称锥 本文主要讲锥与对称锥的一些基本概念。 基础预备&…

C++回顾(四)—— 类的封装

4.1 面向对象编程介绍 4.1.1 什么是面向对象 面向将系统看成通过交互作用来完成特定功能的对象的集合。每个对象用自己的方法来管理数据。也就是说只有对象内部的代码能够操作对象内部的数据。 4.1.2 面向对象的特点 (1)抽象的作用 抽象是人们认识事…

【XXL-JOB】XXL-JOB的搭建和使用

【XXL-JOB】XXL-JOB的搭建和使用 文章目录【XXL-JOB】XXL-JOB的搭建和使用1. 任务调度1.1 实现任务调度1.1.1 多线程实现1.1.2 Timer实现1.1.3 ScheduledExecutor实现2. 分布式任务调度2.1 采用分布式的原因3. XXL-JOB3.1 XXL-JOB介绍3.2 执行流程4. 搭建XXL-JOB4.1 创建数据库…

Ep_操作系统面试题-操作系统的分类

答案 单体系统 整个操作系统是以程序集合来编写的,链接在一块形成一个二进制可执行程序,这种系统称为单体系统。 分层系统 每一层都使用下面的层来执行其功能。 微内核 微内核架构的内核只保留最基本的能力,把一些应用放到了用户空间 客户-…

BCN点击试剂1263166-90-0,endo BCN-OH,环丙烷环辛炔羟基

endo BCN-OH基础产品数据:CAS号:1263166-90-0中文名:环丙烷环辛炔甲醇,环丙烷环辛炔羟基英文名:endo BCN-OH 结构式(Structural):详细产品数据:Molecular formula&#x…

CVPR 2023 | 基础模型推动语义分割的弱增量学习

前言语义分割的弱增量学习(WILSS)目的是学习从廉价和广泛可用的图像级标签中分割出新的类别,但图像级别的标签不能提供定位每个片段的细节。为了解决该问题,本文提出了一个新颖且数据高效的框架(FMWISS)。该…

IM即时通讯开发实时消息的“时序性”与“一致性”

我们都知道,一个典型的分布式系统中,很多业务场景都需要考虑消息投递的时序,例如:IM中单聊消息投递:保证发送方发送顺序与接收方展现顺序一致;IM中群聊消息投递:保证所有接收方展现顺序一致&…

如何审计一个智能合约

智能合约审计用于整个 DeFi 生态系统,通过对协议代码的深入审查,可以帮助解决识别错误、低效代码以及这些问题。智能合约具有不可篡改的特点,这使得审计成为任何区块链项目安全流程的关键部分。 代码审计对任何应用程序都很重要,…

【ES】Elasticsearch核心基础概念:文档与索引

es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 RESTful APIs 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Documen…

Antd Form校验没有效果的问题

问题是这样的: 环境: antd4.x 现象: 如上页面 出现页面后直接点击按钮触发校验,不会有校验提示,页面没有任何反应假如只有其中任何一个,校验正常 比如,没有“模型编码”,只有“模…

变分推断 (Variational Inference) 解析

前言 如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 变分推断 在贝叶斯方法中,针对含有隐变量的学习和推理,通常有两类方式,其一是马尔可…

Python爬虫:如何自动化下载网站图片

目录 Requests 访问页面 XPath 定位 JSON 对象 如何使用 XPath 自动下载百度图片 Selenium 库模拟浏览器 Requests 访问页面 Requests 是 Python HTTP 的客户端库,编写爬虫的时候都会用到,编写起来也很简单。它有两种访问方式:Get 和 P…