SQL | 使用通配符进行过滤
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通配符很有用,但是这种功能也是有代价的,相较于其他检索来说,通配符更耗费时间。
技巧:
-
不要过度使用通配符。如果其他操作符能达到相同目的,应该以其他操作符为主。
-
在确实需要使用通配符的时候,也不要把通配符使用在开始处。把通配符置于开始处是速度最慢的。
-
注意通配符的位置,如果位置不对,则返回的结果可能不尽如人意。
相关文章:
SQL | 使用通配符进行过滤
6-使用通配符进行过滤 6.1-LIKE操作符 前面介绍的所有操作符都是通过已知的值进行过滤,或者检查某个范围的值。但是如果我们想要查找产品名字中含有bag的数据,就不能使用前面那种过滤情况。 利用通配符,可以创建比较特定数据的搜索模式。 …...
make: *** [Makefile:719: ext/openssl/openssl.lo] Error 1
在ubuntu系统上编译安装PHP7.4.33时,会报错如下 make: *** [Makefile:719: ext/openssl/openssl.lo] Error 1 原因分析:这个错误提示的意思是PHP配置过程中缺少OpenSSL库文件,因此在编译过程中出现了问题;Ubuntu 22.04 中openss…...
Android Studio实现简单ListView
效果图 MainActivity package com.example.listviewtest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.widget.ListView;import com.example.listviewtest.adapter.PartAdapter; import com.example.listviewtest.bean.PartB…...
【设计模式】模板模式
什么是模板模式? 模板方法模式(Template Method Pattern),又叫模板模式(Template Pattern),在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行…...
配置docker和复现
1.Nginx环境搭建 选择centos7来进行安装 1.1 创建Nginx的目录并进入 mkdir /soft && mkdir /soft/nginx/ cd /soft/nginx/ 1.2 下载Nginx的安装包,可以通过FTP工具上传离线环境包,或者通过wget命令在线获取安装包 wget https://nginx.org/down…...
Qt应用开发(基础篇)——工具箱 QToolBox
一、前言 QToolBox类继承于QFrame,QFrame继承于QWidget,是Qt常用的基础工具部件。 框架类QFrame介绍 QToolBox工具箱类提供了一列选项卡窗口,当前项显示在当前选项卡下面,适用于分类浏览、内容展示、操作指引这一类的使用场景。 二…...
地理测绘基础知识(1) 坐标系经纬度与ECEF直角坐标的基本换算
经纬度与ECEF直角坐标的基本换算 我们目前最常用的全球坐标系是WGS-84坐标系,各种手机、地图基本用经纬度来标记位置。然而,经纬度对于空间的计算是很复杂的,需要很多三角函数操作。平面直角坐标系利用向量的运算,可以非常方便的…...
【UE4 RTS】08-Setting up Game Clock
前言 本篇实现的效果是在游戏运行后能够记录当前的游戏时间(年月日时分秒),并且可以通过修改变量从而改变游戏时间进行的快慢。 效果 步骤 1. 在Blueprints文件夹中新建如下两个文件夹,分别命名为“GameSettings”、“Player”…...
百度chatgpt内测版
搜索AI伙伴 申请到了百度的chatgpt: 完整的窗口布局: 三个哲学问题: 灵感中心: 请做一副画,一个渔夫,冬天,下着大雪,在船上为了一家的生计在钓鱼,远处的山上也都是白雪&a…...
[GAN] 使用GAN网络进行图片生成的“调参人”入门指南——生成向日葵图片
[GAN] 使用GAN网络进行图片生成的“炼丹人”日志——生成向日葵图片 文章目录 [GAN] 使用GAN网络进行图片生成的“炼丹人”日志——生成向日葵图片1. 写在前面:1.1 应用场景:1.2 数据集情况:1.3 实验原理讲解和分析(简化版&#x…...
(十)人工智能应用--深度学习原理与实战--模型的保存与加载使用
目的:将训练好的模型保存为文件,下次使用时直接加载即可,不必重复建模训练。 神经网络模型训练好之后,可以保存为文件以持久存储,这样下次使用时就不重新建模训练,直接加载就可以。TensorfLow提供了灵活的模型保存方案,既可以同时保存网络结构和权重(即保存全模型),也可…...
Java“牵手”1688商品详情页面数据获取方法,1688API实现批量商品数据抓取示例
背景:1688商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取1688商品详情数据,您可以通过开放平台的接口或者直接访问1688商城的网页来获取商品详情信息。以下是两种常用方法的介绍&a…...
Docker_docker runContainerd
docker run-Containerd docker run -it 运行容器交互式方式启动守护进程方式启动其他命令 docker部署nginx服务k8s废弃docker原因安装和配置containerdcontainerd常用命令 docker run -it 运行容器 交互式方式启动 # 以交互式方式启动并进入容器 docker run --namehello -it …...
python中常见的矩阵变换总结
利用python做数据处理和分析过程中,如在开展机器学习的数据预处理、数据格式转换等等,不可避免的会涉及到各种矩阵变换,其中使用最多的就是numpy下的矩阵变换,以下是日常用到的一些矩阵变换总结,主要有矩阵中数据类型的…...
LightningChart JS 2023Crack,CPU高效实时更新
LightningChart JS 2023Crack,CPU高效实时更新 添加了新的极地热图图表类型-添加了新系列类型,允许您在极地坐标系中可视化热图。极地热图的一些关键特征是: 处理多达400万个数据点。 快速加载速度和CPU高效实时更新。 100ms以完全显示由所有数据填充的热…...
hutool 导出复杂表头excel
假如已这样的表头导出数据 1.把包含表头的excel添加到项目资源目录 2.编写代码读取表头所在sheet,并且加入需导出的数据 /*** 导出excel*/public static void downloadExcel(List<List<Object>> list, HttpServletResponse response) throws IOException {/*Strin…...
git和github学习
一、什么是git和github? 二、学会使用github desktop应用程序 初始使用: 一开始我们是新账户,里面是没有仓库的,需要手动创建一个仓库。此时,这个仓库是创建在本地仓库里面,需要用到push命令(就是那个pub…...
竞赛项目 车位识别车道线检测 - python opencv
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …...
中文版开源Llama 2同时有了语言、多模态大模型,完全可商用
可以说,AI 初创公司 LinkSoul.Al 的这些开源项目让海外开源大模型在国内的普及和推广速度与国际几乎保持了一致。 7 月 19 日,Meta 终于发布了免费可商用版本 Llama 2,让开源大模型领域的格局发生了巨大变化。 Llama 2 模型系列包含 70 亿、…...
JavaScript、TypeScript、ES5、ES6之间的联系和区别
ECMAScript: 一个由 ECMA International 进行标准化,TC39 委员会进行监督的语言。通常用于指代标准本身。JavaScript: ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范,并且可能被用于…...
别再只重启服务了!深入RabbitMQ客户端源码,看懂AmqpIOException到底怎么来的
从Socket到异常栈:解码RabbitMQ客户端IO异常的底层真相 当监控系统第17次报警显示AmqpIOException时,团队里的中级工程师小王习惯性地执行了服务重启。这个动作就像按下老式电视机的雪花屏,短暂恢复后总会再次出现。我们是否思考过࿱…...
如何高效管理系统资源:专业级CPU性能优化工具完整指南
如何高效管理系统资源:专业级CPU性能优化工具完整指南 【免费下载链接】CPUDoc 项目地址: https://gitcode.com/gh_mirrors/cp/CPUDoc 还在为电脑运行卡顿、游戏帧率不稳而烦恼吗?CPUDoc这款免费开源的专业级CPU性能优化工具能够通过智能线程调度…...
从按钮到仪表盘:手把手教你用LVGL v8.3打造一个智能家居控制面板UI
从按钮到仪表盘:手把手教你用LVGL v8.3打造一个智能家居控制面板UI 在嵌入式设备上构建美观且响应迅速的图形界面一直是开发者的挑战。LVGL(Light and Versatile Graphics Library)作为一款开源嵌入式图形库,凭借其轻量级、硬件加…...
穿越机电调调参实战:从“消磁补偿”到“闭环模式”,BLHeliSuite参数详解与飞行手感优化
BLHeli电调深度调参指南:从基础原理到飞行手感优化 1. 理解电调调参的核心逻辑 每次看到BLHeliSuite里密密麻麻的参数列表,新手飞手往往会感到无从下手。实际上,这些参数背后都对应着电机运行的物理原理和飞行场景的实际需求。调参不是玄学&a…...
ThinkPad P53内存升级避坑指南:从断电到双通道,保姆级教程带你一次搞定
ThinkPad P53内存升级避坑指南:从断电到双通道,保姆级教程带你一次搞定 每次打开设计软件时卡顿的进度条,或是同时运行多个虚拟机时的系统崩溃,都在提醒你:16GB内存已经不够用了。作为ThinkPad P53的用户,你…...
从VGG到ResNet:为什么现代CNN架构越来越‘嫌弃’池化层了?
从VGG到ResNet:池化层在现代CNN架构中的兴衰史 记得2014年第一次用VGG16完成图像分类任务时,模型里那些整齐的max pooling层就像高速公路上的收费站,每隔几个卷积层就必然出现。但当我去年复现ResNet-50时,突然发现这些曾经的&quo…...
Hugging Face Skills:为AI编码助手注入MLOps技能,提升开发效率
1. 项目概述:为你的AI编码助手注入Hugging Face生态之力如果你和我一样,每天都在和AI编码助手(比如Cursor、Claude Code、Codex)打交道,那你肯定遇到过这样的场景:想让助手帮你从Hugging Face Hub下载一个模…...
20251219_105921_0基础如何转行学习网络安全?怎么开始?
网络安全学习全攻略:零基础到高薪,收藏这份攻防教程就够了 文章详细分析了网络安全的就业环境、学习路径和前期准备。就业方面,网络安全行业人才缺口大、薪资高,初级岗位年薪10-20万,高级可达百万。学习分为四个阶段&…...
Kandinsky-5.0-I2V-Lite-5s作品赏析:基于Matlab图像处理后的风格化视频生成
Kandinsky-5.0-I2V-Lite-5s作品赏析:基于Matlab图像处理后的风格化视频生成 1. 跨界融合的技术亮点 当科学计算遇上AI生成,会碰撞出怎样的火花?这次我们要展示的是Matlab图像处理与Kandinsky视频生成模型的创新组合。这种跨界合作让原本专业…...
自托管会议智能助理Vexa:开源架构、部署实战与AI集成指南
1. 项目概述:一个能自己部署的会议智能助理如果你和我一样,经常在各种线上会议里疲于奔命,既要参与讨论,又要手忙脚乱地记笔记,最后发现会议纪要一团糟,那你肯定想过:要是有个能自动参会、实时转…...
