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中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u