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

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映