SQL Sever 基础知识 - 数据筛选(3)

2023-12-04 22:52

本文主要是介绍SQL Sever 基础知识 - 数据筛选(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SQL Sever 基础知识 - 四、数据筛选

    • 第7节 BETWEEN
      • 7.1 BETWEEN 运算符概述
      • 7.2 BETWEEN 示例
        • 7.2.1 BETWEEN 与数字示例
        • 7.2.2 BETWEEN 和日期示例
    • 第8节 LIKE
      • 8.1 LIKE运算符概述
      • 8.2 转义字符
      • 8.3 LIKE 示例
        • 8.3.1 % (百分号) 通配符示例
        • 8.3.2 _(下划线)通配符示例
        • 8.3.3 [字符列表] 通配符示例
        • 8.3.4 [character-character] 通配符示例
        • 8.3.5 [^Character List or Range] 通配符示例
        • 8.3.6 NOT LIKE 操作符示例
        • 8.3.7 LIKE 和 ESCAPE 示例
    • 第9节 别名
      • 9.1 列的别名
      • 9.2 表的别名

更多SQL Sever基础知识可查看:SQL Sever 基础知识(全)

特别说明
  本文章所用的所有数据库、数据表及其数据皆为AI随机生成,不涉及个人隐私,且仅供学习使用!

第7节 BETWEEN

查询条件是否在值范围之间

7.1 BETWEEN 运算符概述

BETWEEN 运算符是一个逻辑运算符,允许指定要查询的范围。
下面说明了 BETWEEN 运算符的语法:

column | expression BETWEEN start_expression AND end_expression

在此语法中:
① 指定要测试的列或表达式。
② 将 start_expression 和 end_expression 放在 BETWEEN 和 AND 关键字之间。 start_expression 、 end_expression 和 expression 必须具有相同的数据类型。
③ 如果要测试的表达式大于或等于 start_expression 的值且小于或等于 end_expression 的值,则 BETWEEN 运算符返回 TRUE

可以使用大于或等于(>=)和小于或等于(<=)来替换 BETWEEN 运算符,如下所示:

column | expression <= end_expression AND column | expression >= start_expression   

但是使用 BETWEEN 运算符的条件比使用比较运算符>=、<=和逻辑运算符 AND 的条件可读性更强。

要对 BETWEEN 运算符的结果求反,请使用 NOT BETWEEN 运算符,如下所示:

column | expression NOT BETWEEN start_expression AND end_expresion

如果列或表达式中的值小于 start_expression 的值且大于 end_expression 的值,则 NOT BETWEEN 返回 TRUE 。它等价于以下条件:

column | expression < start_expression AND column | expression > end_expression

如果 BETWEENNOT BETWEEN 的任何输入是 NULL ,则结果是 UNKNOWN

7.2 BETWEEN 示例

7.2.1 BETWEEN 与数字示例

查询OrderDate表中购买数量在8~10的所有订单信息:

 select *from OrderDatewhere Quantity between 8 and 10order by Quantity

执行结果:
在这里插入图片描述

7.2.2 BETWEEN 和日期示例

查询OrderDate表中在四、五月份下单的订单信息:

 select *from OrderDatewhere OrderDate between '20230401' and '20230531'  ----between '2023-04-01' and '2023-05-31'order by OrderDate

执行结果:
在这里插入图片描述

第8节 LIKE

检查字符串是否与指定的模式匹配

8.1 LIKE运算符概述

LIKE 是一个逻辑运算符,用于确定字符串是否与指定的模式匹配。可以包括常规字符和非常规字符。 LIKE 运算符用于 SELECT 、 UPDATE 和 DELETE 语句的 WHERE 子句中,以根据模式匹配筛选行。
LIKE 运算符的语法:

column | expression LIKE pattern [ESCAPE escape_character]

要对 LIKE 运算符的结果求反,请使用 NOT 运算符,如下所示:

column | expression NOT LIKE pattern [ESCAPE escape_character]

在语法中:
Pattern 是要在列或表达式中搜索的字符序列。它可以包含以下有效的通配符:
① 通配符百分比 (%):零个或多个字符的任何字符串。
② 下划线 (_) 通配符:任意单个字符。
③ [字符列表] 通配符:指定集中的任何单个字符。
④ [字符-字符]:指定范围内的任何单个字符。
⑤ [^]:不在列表或范围内的任何单个字符。
通配符使LIKE运算符比等于 (=) 和不等 (!=) 字符串比较运算符更灵活。

8.2 转义字符

转义字符指示 LIKE 操作符将转义字符视为常规字符。转义字符没有默认值,只能计算为一个字符。如果列或表达式与指定的模式匹配,则 LIKE 运算符返回 TRUE 。

8.3 LIKE 示例

8.3.1 % (百分号) 通配符示例

1、查询CustomerInfo表中,所有刘姓顾客的信息:

 select *from CustomerInfowhere CusName like '刘%'

执行结果:
在这里插入图片描述
2、查询CustomerInfo表中,所有姓名含有‘小’字顾客的信息:

 select *from CustomerInfowhere CusName like '%小%'

执行结果:
在这里插入图片描述
3、查询顾客姓名以‘刚’字结尾的顾客订单信息:

 select *from CustomerInfowhere CusName like '%刚'

执行结果:
在这里插入图片描述
4、查询顾客姓名以‘王’开头‘宇’结尾的顾客订单信息:

 select *from CustomerInfowhere CusName like '王%宇'

执行结果:
在这里插入图片描述

8.3.2 _(下划线)通配符示例

下划线表示单个字符。查询顾客姓名第二个字是‘小’的所有顾客订单信息:

 select *from CustomerInfowhere CusName like '_小%'  --  where CusName like '_小_'

执行结果:
在这里插入图片描述
通配符 '_小%'
第一个下划线字符( _ )匹配任何单个字符;
第二个字母 u 与字母u完全匹配;
第三个字符 % 匹配任何字符序列。

8.3.3 [字符列表] 通配符示例

带有字符列表的方括号,例如 [ABC] 单个字符,该字符必须是列表中指定的字符之一。
1、查询 CustomerInfo 表中客户姓名中第一个字符为‘张’或‘刘’ 的客户信息:

 select *from CustomerInfowhere CusName like '[张刘]%'

执行结果:
在这里插入图片描述
2、查询 employees 表中员工 first_name 第一个字符为‘A’或‘D’ 的客户信息:

 select * from employeeswhere first_name like '[AD]%'order by first_name

执行结果:
在这里插入图片描述

8.3.4 [character-character] 通配符示例

带有字符范围的方括号,如 [A-C] 表示必须在指定范围内的单个字符。
查询employees表中,员工 first_name 以A-D开头的员工信息:

 select * from employeeswhere first_name like '[A-D]%'order by first_name

执行结果:
在这里插入图片描述

8.3.5 [^Character List or Range] 通配符示例

带插入符号(^)的方括号后跟一个范围,例如, [^A-C] 或字符列表,例如, [ABC] 表示不在指定范围或字符列表中的单个字符。
1、查询 employees 表中,员工 first_name 不以A-D开头的员工信息:

 select * from employeeswhere first_name like '[^A-D]%'order by first_name

执行结果:
在这里插入图片描述
2、查询 CustomerInfo 表中,顾客姓氏不是‘张’‘刘’‘王’‘陈’的顾客信息:

 select *from CustomerInfowhere CusName like '[^张刘王陈]%'order by CusName

执行结果:
在这里插入图片描述

8.3.6 NOT LIKE 操作符示例

1、查询 CustomerInfo 表中,顾客姓氏不是‘张’‘刘’‘王’‘陈’的顾客信息:

 select *from CustomerInfowhere CusName not like '[张刘王陈]%'order by CusName

执行结果:
在这里插入图片描述
2、查询 employees 表中,员工 first_name 不以A-D开头的员工信息:

 select * from employeeswhere first_name not like '[A-D]%'order by first_name

执行结果:
在这里插入图片描述

8.3.7 LIKE 和 ESCAPE 示例

ESCAPE是一个用于指定转义字符的关键字。当在SQL语句中使用LIKE操作符进行模式匹配时,我们可以使用ESCAPE来定义一个转义字符,以通过转义某些特殊字符,将其视为普通字符而不是具有特殊含义的通配符。
现有一张季度汇报表,内容如下:
在这里插入图片描述
现在需要查询汇报内容数据20%的相关内容,此时我们可以有如下查询:

 select * from 销售报表where 汇报内容 like '%20%'

执行结果:
在这里插入图片描述
从查询结果中可以发现返回的结果并不符合我们的预期,因为在LIKE操作符中,有两个特殊字符具有通配符的含义:%(表示任意字符序列)_(表示任意单个字符),他们在使用时不会呈现出普通字符。当我们希望在LIKE操作中使用这些字符作为普通字符进行匹配,而不是通配符,就可以通过ESCAPE来指定转义字符。
改写上述代码如下:

 select * from 销售报表where 汇报内容 like '%20\%%' ESCAPE '\'

在此查询中, ESCAPE 子句指定字符‘\’是转义字符。它指示将‘\’后的字符(即‘%’)视为文字字符串而不是字符串。注意,如果没有 ESCAPE 子句,查询将返回一个空的结果集。
执行结果:
在这里插入图片描述
Note:
ESCAPE关键字不仅可以用于LIKE操作符,还可以用于其他需要转义特殊字符的场景,如字符串中的特殊字符、正则表达式等。

第9节 别名

9.1 列的别名

使用 SELECT 语句从表中查询数据时,SQL Server使用列名作为输出的列标题。
1、查询employees表中员工的first_name和last_name:

 select first_name,last_namefrom employeesorder by first_name

执行结果:
在这里插入图片描述
如输出所示列标题分别使用了 first_name 和 last_name 列名。
2、要获取客户的全名,可以使用串联 + 运算符将名字、空格和姓氏串联起来,查询如下:

 select first_name+ ' '+last_namefrom employeesorder by first_name

执行结果:
在这里插入图片描述
因为查询的结果是组合出来的列,在原表中没有此列,所以返回结果集将全名列返回为( No column name ),这在此没有意义,在查询执行期间为列或表达式分配临时名称,需要使用列别名
3、给查询的结果列取别名:

 select first_name+ ' '+last_name as 'Name'		--as 可省略from employeesorder by first_name

执行结果:
在这里插入图片描述
Note:
① 使用 AS 关键字分隔列名或表达式与别名,AS 关键字是可选的;
② 别名可省略括号,但是如果别名中包含空格符,则括号不可省:如上述代码别名为 ‘Full Name’,括号不可省略,如果为‘Full_Name’ 括号可省略。
③ 为列分配别名时,可以在 ORDER BY 子句中使用列名或列别名, ORDER BY 子句是要处理的最后一个子句,因此列别名在排序时是已知的。

9.2 表的别名

一个表可以被赋予一个别名,称为关联名或范围变量。
现有员工信息employees 表和工资表salaries ,需要查询员工工号,员工姓名(全)和员工工资:

 select em.emp_no,first_name+ ' '+last_name as 'Name',sa.salaryfrom employees eminner join salaries sa on em.emp_no = sa.emp_noorder by Name

执行结果:
在这里插入图片描述
在此查询中:
信息employees 表和工资表salaries都有一个列的名称相同 emp_no 列 ,需要使用以下语法引用该列:em.emp_no,em即employees 表的别名,表示employees 表中的emp_no列;
为表分配别名时,必须使用别名来引用表列,否则在执行时会报错。

这篇关于SQL Sever 基础知识 - 数据筛选(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/455197

相关文章

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义