SQL学习之用通配符进行数据过滤

一、Like操作符

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

但是这种方法并不是任何时候都好用。有如下代码:

select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail

需求:现在需要检索ItemName中包含"心率"的行记录,这个时候使用简单的比较操作符肯定不行,必须使用通配符。利用通配符,可以 创建  比较 特定的数据 的搜索模式,在这里如果我们想找出ItemName包含"心率"的行记录,可以构造一个通配符搜索模式:

通配符:用来匹配值的一部分的特殊字符。

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

而使用通配符搜索模式,必须使用LIKE操作符,LIKE指示DBMS(数据库管理系统),后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。

这里上面提出的检索要求我们还没有完成,在下面介绍完通配符后再完成上面的检索任务。

二、通配符

1、百分号(%)通配符

这个通配符使我们日常开发中最常使用的通配符,在搜索串中,%表示任何字符出现任意次数,现在我通过"%"通配符来完成上面提出的需求代码如下:

select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ItemName LIKE ‘心率%‘

ok,完成了上面的需求。

这段代码使用了搜索模式‘心率%‘,在执行这条子句时,将检索任意ItemName列值以‘心率‘开头的词。%告诉DBMS(数据库管理系统)接收‘心率‘之后的任意字符,不管他有多少字符。

下面我们盖面上面的需求,检索ItemName列值中包含‘范围‘的行数据,这个时候用上面‘范围%‘的搜索模式就无法搜索出来,下面是解决代码:

select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ItemName LIKE ‘%范围%‘

搜索模式‘%范围%‘表示匹配任何位置上包含文本‘范围‘的值,不论他之前或之后出现什么字符。

这里表示搜索ItemName列值中包含‘范围‘的行数据,不论它之前或者之后出现什么字符。

下面再次更改上面的需求,检索ItemName列值中以‘心‘开头,以‘定‘结尾的行数据。下面是解决代码:

select ItemId,ItemName,CheckValueNum,CheckValueString,ResultLevel from T_Check_InfoDetail where ItemName LIKE ‘心%定‘

这段代码使用了搜索模式‘心%定‘,在执行这条子句时,将检索任意ItemName 列值以‘心‘开头,已‘定‘结尾的行数据,%告诉DBMS(数据库管理系统)接收‘心‘之后,‘定‘之前的任意字符,不管这中间有多少字符。

在使用‘%‘匹配的时候,需要注意的几点:

1、%几乎可以匹配任何东西,但有个例外,这就是null。

2、注意搜索模式‘心%定 ‘,发现定后面有一个空格,而这个空格恰好改变了我们的检索的初衷,这时候DBMS回去匹配以‘定 ‘结尾的行数据,所以在使用通配符匹配数据的时候,一定要注意空格。

2、下划线( _ )通配符

时间: 2024-11-10 14:11:41

SQL学习之用通配符进行数据过滤的相关文章

sql学习笔记(14)------------数据表

有关数据表的操作 数据库基本操作 用 MySQL,目前(版本 3.23)你可以在三种基本数据库表格式间选择.当你创建一张表时,你可以告诉 MySQL它应该对于表使用哪个表类型.MySQL将总是创建一个.frm 文件保存表和列定义.视表类型而定,索引和数据将在其他文件中存储. 你能用 ALTER TABLE语句在不同类型的表之间变换. MyISAM MyISAM是缺省表格类型,它是基于ISAM代码并且有很多有用的扩展.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD

使用通配符进行数据过滤

操作符+通配符[ like '_%']组合进行模糊查询 例如,查询商品名称以jet开头的商品: select prod_id,prod_name from products where prod_name like 'jet%'; 查询的结果是: prod_id | prod_name 100 | jetpack 155 101 | Jetpook 159 120 | Jetllllack 165 因为设置了不区分大小写所以就会查出来J和j 例如,查询商品名称以jet结尾的商品: select

SQL学习_查询重复数据和连接多个表数据的方法

进行数据库测试时需要根据不同场景查询数据,以便验证发现的问题是否为脏数据引起的.记录一下最近常用的查询方法: 1. 查询表中重复数据(id不同,多个字段值相同) select P1.* from project as P1, project as P2 where P1.id<>P2.id and P1.ProjectId=P2.ProjectId and P1.ServiceTypeId=P2.ServiceTypeId and P1.Rank=P2.Rank 2.连接多个表数据 selec

Python学习---Django误删除sql表后,如何创建数据

误删除sql表后,怎么创建数据? 仅仅适合单表,多表因为涉及约束, python mangage.py makemigrations  --> 生成migrations目录和根数据库对应的sql python mangage.py migrate         --> 同步数据到数据库内 python mangage.py migrate --fake    --> 不同步数据到数据库内 原文地址:https://www.cnblogs.com/ftl1012/p/9417319.ht

TERADATA SQL学习随笔&lt;一&gt;

最近在TERADATA环境学习SQL.在这里记录一下学习中查过的知识点,作为备案. 目录: 关于SQL学习及所用在线数据库 表联合 (join) SQL子查询 在select时创建新字段 (as, case when) 数据分组 (group by + 聚合函数count, sum, avg等) 利用over (partition by)进行数据分组并创建新字段 样本选择 1.关于SQL学习及所用在线数据库 之前有看过一些SQL学习的书.但如果从学习效率来说,跟着书学习SQL,不如直接看生产环境

sql学习笔记1

参考: 1.<SQL学习指南> 2.慕课网,SQL学习基础 提纲: 第二章 创建和使用数据库 2.1 创建MYSQL数据库 2.2 使用mysql命令行工具 2.3 MySQL数据类型 2.3.1 字符型数据 2.3.2 数值型数据 2.3.3 时间数据 2.4 表的创建 2.4.1 第一步:设计 2.4.2 第二步:精华 2.4.3 第三步:构建SQL方案语句 2.5 操作和修改表 2.5.1 插入数据 2.5.2 更新数据 2.5.3 删除数据 2.6 导致错误的语句 2.6.1 主键不唯

Oracle之PL/SQL学习笔记

自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家批评指正. PL/SQL定义:PL/SQL是由Oracle开发,专门用于Oracle的程序设计语言. PL---Procedural Language. SQL—Structure QueryLanguage.PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块. 一个块中可以嵌套

SQL 学习日志02

SQL数据类型 1.字符类型 char   --定长字符数据   如 char(12)  这字段就会占用12字节的空间,无论这个字段只填写了2个字节.一般在可确定这字段长度时选用,如sex字段(因只有男和女两项可选)就可用 char(2). varvhar   --可变长字符数据  如varchar(50) 这字段最大只能填写50字节,按实际填写的字节存储.一般在不确定这字段长度时使用,如 Smail字段(因邮箱的长度不确定) 就可用varchar(50). text    --用来存储大量非统

Sharepoint2013搜索学习笔记之设置业务数据内容源(六)

Sharepoint搜索爬网组件支持爬Business Data Connectivity Service 承载的外部数据,关于Business Data Connectivity Service设置外部数据源,详请请参考:如何:在 SharePoint 2013 中为 SQL Server 创建外部内容类型,爬网设置步骤如下: 第一步,进入管理中心,点击管理应用程序,点击search service 应用程序进入到搜索管理配置页面,点击内容源 第二步,点击新建内容源,给内容源命名,在爬网内容类