SQL | 使用通配符进行过滤

news2024/12/28 20:13:18

6-使用通配符进行过滤

6.1-LIKE操作符

前面介绍的所有操作符都是通过已知的值进行过滤,或者检查某个范围的值。但是如果我们想要查找产品名字中含有bag的数据,就不能使用前面那种过滤情况。

利用通配符,可以创建比较特定数据的搜索模式。

搜索模式:由字面值、通配符或两者组合构成的搜索条件。

通配符实际上是SQL语句中where子句中具有特殊含义的字符,SQL支持几种通配符。在为搜索子句中使用通配符,必须使用like操作符。

谓词:操作符何时不是操作符?答案是,它作为谓词时。从技术上说,LIKE是谓词而不是操作符。

通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。

6.1.1 百分号(%)通配符

百分号是最常用的通配符,%表示任何字符出现任意次数。

select prod_id,prod_name
from products
where prod_name LIKE 'Fish%';

上述SQL语句的含义是,查找名称以‘Fish’开头的行。执行上述语句时,会检索所有以'Fish'开头的词,不管它有多少字符。

一般来说,根据DBMS不同的配置,可以是区分大小写,'Fish'和‘fish’相同。也可以是不区分大小写,'Fish'和‘fish’不同。

通配符可以在搜索模式任意位置使用,并且可以使用多个通配符。

select prod_id,prod_name
from products
where prod_name LIKE '%bean bag%';

 

上述语句检索的数据特征是:名字中含有bean bag这段字符串的数据,不管它之前或者之后出现什么样的字符串。

通配符还可以出现搜索模式的中间,虽然这么做不太有用。下面例子找出以F开头,以y结尾的数据。

select prod_id,prod_name
from products
where prod_name LIKE 'F%y';

 

有一种情况把通配符放到搜索模式的中间,是很有效果的,就是根据邮件地址的一部分查找邮件。例如WHERE email LIKE 'b%@forta.com'

注意:除了能匹配一个或多个字符以外,%还可以匹配0个字符。%代表搜索模式中给定位置的0个、1个或多个字符。

通配符%看起来像是可以匹配任何东西,但有个例外,这就是NULL。子句WHERE prod_name LIKE '%'不会匹配产品名称为NULL的行。

6.1.2 下划线(_)通配符

作用与%通配符相同,只不过,它只匹配单个字符,并不会匹配多个字符。

select prod_id,prod_name
from products
where prod_name LIKE '__ inch teddy bear';

上述代码,给出了两个下划线通配符,检索出的数据应该是开头两个字符的数据。因此,产品名为“8 inch teddy bear”的产品不会被检索到。

6.1.3 方括号([ ])通配符

方括号通配符是指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。

并不是所有DBMS都支持用来创建集合的[]。微软的SQL Server支持集合,但是MySQL,Oracle,DB2,SQLite都不支持

SELECT cust_contact 
FROM Customers 
WHERE cust_contact LIKE '[JM]%' 
ORDER BY cust_contact; 

名字以J或M起头的联系人。

此语句的WHERE子句中的模式为'[JM]%'。这一搜索模式使用了两个不同的通配符。[JM]匹配方括号中任意一个字符,它也只能匹配单个字符。因此,任何多于一个字符的名字都不匹配。[JM]之后的%通配符匹配第一个字符之后的任意数目的字符,返回所需结果。

此通配符可以用前缀字符^(脱字号)来否定。例如,下面的查询匹配以J和M之外的任意字符起头的任意联系人名。

SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[^JM]%'
ORDER BY cust_contact;

也可以使用NOT操作符得出类似的结果。^的唯一优点是在使用多个WHERE子句时可以简化语法

SELECT cust_contact
FROM Customers
WHERE NOT cust_contact LIKE '[JM]%'
ORDER BY cust_contact;

6.2-使用通配符技巧

SQL通配符很有用,但是这种功能也是有代价的,相较于其他检索来说,通配符更耗费时间。

技巧:

  • 不要过度使用通配符。如果其他操作符能达到相同目的,应该以其他操作符为主。

  • 在确实需要使用通配符的时候,也不要把通配符使用在开始处。把通配符置于开始处是速度最慢的。

  • 注意通配符的位置,如果位置不对,则返回的结果可能不尽如人意。

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

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

相关文章

SpringSpringBoot常用注解

目录 一、核心注解二、Spring Bean 相关2.1 Autowired2.2 Component, Repository, Service, Controller2.3 RestController 与 Controller2.4 Configuration 与 Component2.5 Scope 三、处理常见的 HTTP 请求类型3.1 GET 请求3.2 POST 请求3.3 PUT 请求3.4 DELETE 请求3.5 PATC…

Mybatis查询

返回实体类,必须指定返回类型, resultType不能省略,并且数据库字段名与实体类不一致会填充NULL,实体类我们一般都是驼峰,数据库字段一般都是下划线,所以在查询的时候可以起别名解决,属性填充本质上调用的是…

XXLJOB 怎么用

目录 1、数据库执行sql语句,建立表 2、配置Admin ,连接xxl_job数据库 3、启动admin,访问 http://localhost:8080/xxl-job-admin 4、需要定时任务的微服务里导入依赖 5、配置yml(admin地址,执行器名字 端口&#x…

小红书店铺怎样开通?(含详细步骤)

目录 一、小红书店铺开通 二、小红书店铺的权益 三、小红书店铺的三大玩法功能 四、小红书店铺常见问题 五、开店具体步骤: 大家好,我是网媒智星,今天跟大家分享一下小红书店铺怎样开通的问题,下文总结了详细步骤&#xff0c…

ipad触控笔有必要买吗?ipad可用触控笔推荐

苹果原装的电容笔,和国产的平替容笔最大的区别就在于,平替电容笔在压感功能上只具有倾斜的压感,而并没有跟苹果电容笔同样的重力压感,苹果电容笔同时具有倾斜压感与重力压感。但是,如果你不经常使用电容笔来绘画的话&a…

品牌渠道控价常见问题有哪些

不管是哪个品牌在做控价时,会遇到的问题都是相通的,如果筛选低价、窜货链接,如何去治理这些链接,使其下架,或者是改价。也会有品牌需要针对渠道中的乱价问题进行提前预警或者规避,这些可以通过分析电商数据…

访问学者申请简历写作指南

作为许多追求学术进步的人士所希望的,成为一名访问学者是一个极具吸引力的机会。无论是为了深化学术研究、拓展国际视野,还是与优秀的学者们互动交流,访问学者的身份都能为您带来丰富的经验。而在申请成为一名访问学者时,一份精心…

版本控制工具——git

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。 版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的…

利用简单的算法解决逻辑推理问题(推测名次/推理谁说谎)

该算法很简单,以至于我们只需要三部分就可以完成。以这一题为例: 我们创建一个数组arr[6] { 1 } arr[1]到arr[5]分别对应A B C E,数组的值对应的是他们的比赛名次。其中arr[0]是用来立个flag的(也就是说用来做标记)。 接下来我们只需要写两…

轻量的工作流引擎:告别低效,创造新高!

伴随着日益激烈的市场竞争,作为新时代的企业,如何在众多同质化竞争中脱颖而出,占有更多的市场份额,实现更大发展?此时此刻就需要拥有不同寻常的头脑,寻找不平常的路径,轻量的工作流引擎是低代码…

cron中文翻译工具类

实现效果 /*** cron转换中文工具类** author lixuan*/ public class CronUtil {private static final Logger LOGGER LoggerFactory.getLogger(CronUtil.class);/*** cron中文表达式*/private static final List<ValueLabelPair> HOUR_LIST generateValueLabelPairs(…

使用 Packet Tracer 查看协议数据单元

练习 2.6.2&#xff1a;使用 Packet Tracer 查看协议数据单元 地址表 本练习不包括地址表。 拓扑图 学习目标 捕获从 PC 命令提示符发出的 ping运行模拟并捕获通信研究捕获的通信从 PC 使用 URL 捕获 Web 请求运行模拟并捕获通信研究捕获的通信 简介&#xff1a; Wiresha…

Dynamics 365 实体配置各属性介绍

在主界面中,我们点击设置图标->高级设置->解决方案,即可跳转到解决方案配置页面。 解决方案的存在有两方面价值,一方面是方便我们对系统进行定制,比如新建实体。另一方面则是为了方便我们在不同的环境之间复制修改的内容,也即发布。 解决方案包配置 在解决方案包…

DERT:End-to-End Object Detection with Transformers

文章目录 摘要1、简介2、相关工作2.1、集合预测2.2、Transformer与并行解码2.3、目标检测 3、DETR模型3.1、目标检测集合预测损失3.2、DETR架构 4、实验4.1、与Faster R-CNN的对比4.2、消融4.3、分析4.4、用于全景分割的DETR 5、结论附录 AA.1、初步:多头注意层A.2、损失A.3、详…

广州华锐互动:电力VR安全体验让学员沉浸式感受安全危害

随着科技的不断发展&#xff0c;虚拟现实(VR)技术在电力安全体验中发挥着越来越重要的作用。VR技术可以提供一种沉浸式的体验&#xff0c;使学员更好地理解和掌握电气安全知识&#xff0c;从而减少意外事故的发生。 首先&#xff0c;VR技术可以模拟各种电气事故场景&#xff0…

最大交换(力扣)枚举 JAVA

给定一个非负整数&#xff0c;你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 10^8] 解题思路&#xff1a; 1、数最…

Figma高效工作秘笈:10个插件助你提效!

Figma插件本质上是遵循特定接口规范开发的小程序,对设计师来说,合理选择和使用Figma插件,可以极大地优化工作流程。不同的插件具有不同的用途,设计师可以根据实际需求选择适合的插件。市面上存在各种各样的Figma插件,初学者可能会不知所措。本文将推荐10款广受设计师欢迎、功能…

[Mongodb 5.0]单机启动

安装完mongodb后&#xff0c;会自动生成下面两个目录(mongod.conf中设定的)&#xff0c;用来存放日志和数据 /var/lib/mongo (数据目录) /var/log/mongodb (日志目录) 要启动一个单机版的mongodb&#xff0c;一般有两种方式&#xff1a; 第一种启动方式&#xff1a;直接使用…

SD NAND FLASH : 什么是pSLC?

一、什么是pSLC pSLC&#xff08;Pseudo-Single Level Cell&#xff09;即伪SLC&#xff0c;是一种将MLC/TLC改为SLC的一种技术&#xff0c;现Nand Flash基本支持此功能&#xff0c;可以通过指令控制MLC进入pSCL模式&#xff0c;存储时在MLC的每个单元中仅存储1bit数据&#x…

传值与传址问题

传值与传址实例 2023年上半年软考真题&#xff1a; 22、设函数foo和hoo的定义如下图所示&#xff0c;在函数foo中调用函数hoo&#xff0c;hoo的第一个参数采用传引用方式(call by reference)&#xff0c;第二个参数传值方式(call by value)&#xff0c;那么函数foo中的print(a…