「SAP ABAP」OPEN SQL(八)【WHERE语句大全】
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。
💅文章概要: 在本节内容中,我们将继续学习ABAP OPEN SQL的知识,今天带来的内容是子查询在OPEN SQL中的应用。子查询可以帮助我们在不知道某些具体数据的情况下查询到我们想要的结果,是经常使用的重点语句之一。
🤟每日一言: 永远年轻,永远热泪盈眶!
目录
- 前言
- 数据库表准备
- 简单WHERE子句
- 案例演示
- 使用"="运算符
- 使用">"运算符
- 使用"<"运算符
- 使用"<>"运算符
- WHERE 子句中的逻辑运算符
- 案例演示
- 使用"AND"逻辑运算符
- 使用"OR"逻辑运算符
- 使用"NOT"逻辑运算符
- BETWEEN 运算符
- 案例演示
- IN 子句
- 案例演示
- LIKE 子句
- 案例演示
- 使用"%"通配符
- 使用"_"通配符
- 子查询语句
- 写在最后的话
前言
在本节内容中,我们将继续学习ABAP OPEN SQL的知识,今天带来的内容是子查询在OPEN SQL中的应用。子查询可以帮助我们在不知道某些具体数据的情况下查询到我们想要的结果,是经常使用的重点语句之一。
数据库表准备
本文所有案例都是基于数据库表SFLIGHT
,本案例中的SFLIGHT数据库表数据如下,供各位小伙伴们对照来观察代码运行结果:
简单WHERE子句
一个简单的 WHERE 子句
通常包含一个条件表达式
,该表达式评估为 TRUE
或 FALSE
。这个表达式通常由以下元素组成:
-
字段名
:需要筛选的字段名。 -
运算符
:用于比较字段值的运算符,如等于号(=)
、大于号(>)
、小于号(<)
等。 -
值
:与字段值进行比较的值。
以下是简单WHERE子句
的一般语法样式:
SELECT ...
FROM table_name
WHERE field_name [= | > | < | <>] 'value'.
参数介绍:
<table_name>
: 目标数据库表<field_name>
: 数据库表中字段。
案例演示
下面给出四段以SFLIGHT数据库表
为基准的示例代码,详细讲解了ABAP OPEN SQL中简单WHERE子句的应用
,仅供参考:
PS:为了简便,下面的语法都基于OPEN SQL的新语法,关于新语法的讲解将在本系列最后章节进行详细地讲解!
TIPS:运算符与字段和值之间需要间隔至少一个空格单位
!!!
使用"="运算符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)
WHERE carrid ='AC'.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.ENDLOOP.
该段代码使用
"="运算符
检索出了SFLIGHT
数据库表中所有carrid等于AC
的数据。
使用">"运算符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE price > 2000.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
该段代码使用
">"运算符
,检索出了SFLIGHT
数据库表中所有price大于2000
的数据。
使用"<"运算符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE price < 2000.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
该段代码使用
"<"运算符
,检索出了SFLIGHT
数据库表中所有price小于2000
的数据。
使用"<>"运算符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE price <> 2500.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
该段代码使用
"<>"运算符
,检索出了SFLIGHT
数据库表中所有price不等于2500
的数据。
WHERE 子句中的逻辑运算符
WHERE子句中可以使用逻辑运算符
来将多个条件组合在一起。下面是一些常见的逻辑运算符:
-
AND
:当所有条件都为 TRUE
时,整个条件表达式才会评估为 TRUE
。 -
OR
:当至少有一个条件为 TRUE
时,整个条件表达式就会被评估为 TRUE
。 -
NOT
:将条件表达式的结果反转
。
案例演示
下面给出三段以SFLIGHT数据库表
为基准的示例代码,详细讲解了ABAP OPEN SQL中WHERE子句逻辑运算符的应用
,仅供参考:
PS:为了简便,下面的语法都基于OPEN SQL的新语法,关于新语法的讲解将在本系列最后章节进行详细地讲解!
TIPS:运算符与字段和值之间需要间隔至少一个空格单位!!!
使用"AND"逻辑运算符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE carrid = 'AC' AND price = 2500.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
该段代码使用
"AND"逻辑运算符
,检索出了SFLIGHT
数据库表中所有carrid等于'AC'
和price等于2500
的数据。
使用"OR"逻辑运算符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE PRICE = 1500 OR PRICE = 2500.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
该段代码使用
"OR"逻辑运算符
,检索出了SFLIGHT
数据库表中所有price等于'1500'
或者price等于2500
的数据。
使用"NOT"逻辑运算符
*PS:注意NOT与括号之间需要有空格,条件表达式与括号之间也需要有空格!!
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE NOT ( PRICE = 1500 OR PRICE = 2500 ). LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
该段代码使用
"NOT"逻辑运算符
,将上方使用OR逻辑运算符的那段代码的结果进行了反转,剔除掉了SFLIGHT
数据库表中所有price等于'1500'
或者price等于2500
的数据。
BETWEEN 运算符
BETWEEN 运算符用于检索介于两个值之间的数据。BETWEEN 运算符需要指定一个起始值和一个结束值,它将匹配这两个值之间(包括这两个值)的所有行。
以下是BETWEEN
运算符的一般语法样式:
SELECT ...
FROM table_name
WHERE field_name BETWEEN 'value1' AND 'value2'.
参数介绍:
<table_name>
: 目标数据库表<field_name>
: 数据库表中字段。value1,value2
: 值
案例演示
下面给出一段以SFLIGHT数据库表
为基准的示例代码,详细讲解了ABAP OPEN SQL中BETWEEN运算符的应用
,仅供参考:
PS:为了简便,下面的语法都基于OPEN SQL的新语法,关于新语法的讲解将在本系列最后章节进行详细地讲解。
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE price BETWEEN 1000 AND 1500.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
该段代码中使用
BETWEEN
运算符将数据进行了限制,只从数据库表中取出price在1000到1500之间
的数据。
IN 子句
IN 子句可以用来匹配一系列值中的任何一个。IN 子句可以使用一个列表,列表中包含需要匹配的值。这个列表可以是常量、字段或子查询的结果。
以下是IN
子句的一般语法样式:
SELECT ...
FROM table_name
WHERE field_name IN (['value1', 'value2', 'value3' | 子查询语句]).
参数介绍:
<table_name>
: 目标数据库表<field_name>
: 数据库表中字段。value1,value2,value3
: 值- IN后面的列表中还可以填入子查询语句,将在本文最后进行讲解
案例演示
下面给出一段以SFLIGHT数据库表
为基准的示例代码,详细讲解了ABAP OPEN SQL中IN子句的应用
,仅供参考:
PS:为了简便,下面的语法都基于OPEN SQL的新语法,关于新语法的讲解将在本系列最后章节进行详细地讲解。
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE price IN ( 1500,2500 ).LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
在这段代码中,使用IN子句利用列表限制了
price的值只能为1500或者2500
,但是要注意列表中的值需要用逗号分隔并且距离两端括号至少一个空格单位
。
LIKE 子句
LIKE 子句用于基于模式
的比较,它可以用来匹配一个特定的模式。LIKE 子句可以使用通配符
来代替某些字符。通配符有两种:
-
百分号(%)
:代表任何字符序列,包括零个字符。 -
下划线(_)
:代表任何单个字符。
以下是LIKE
子句的一般语法样式:
SELECT ...
FROM table_name
WHERE field_name LIKE 'value%'.
参数介绍:
<table_name>
: 目标数据库表<field_name>
: 数据库表中字段。value%
: 通配值
案例演示
下面给出两段以SFLIGHT数据库表
为基准的示例代码,详细讲解了ABAP OPEN SQL中LIKE子句的应用
,仅供参考:
使用"%"通配符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE CARRID LIKE 'A%'.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
上述代码将从
SFLIGHT
表中检索所有CARRID
列以'A'
开头的行,并将他们打印输出到屏幕中。
使用"_"通配符
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE CARRID LIKE 'L_'.LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
上述代码将从
SFLIGHT
表中检索所有CARRID
列以'L'
开头的行,并将他们打印输出到屏幕中。
子查询语句
子查询是一个 SELECT 语句,它嵌套在另一个 SELECT 语句中作为一个条件。子查询的结果可以是一个单一的值
、一个列表
或一个表
。
以下是子查询语句
的一般语法样式:
SELECT ...
FROM table_name1
WHERE field_name IN (SELECT field_name FROM table_name2).
参数介绍:
<table_name1>
: 目标数据库表<table_name2>
: 子查询目标数据库表<field_name>
: 数据库表中字段。
下面给出一段以SFLIGHT数据库表
和SPFLI数据库表
为基准的示例代码,详细讲解了ABAP OPEN SQL中LIKE子句的应用
,仅供参考:
SELECT * FROM sflight INTO TABLE @DATA(gt_sflight)WHERE CARRID IN ( SELECT CARRID FROM spfli WHERE connid = '0026' ).LOOP AT gt_sflight INTO DATA(gs_sflight).WRITE: / gs_sflight-carrid,gs_sflight-connid,gs_sflight-price.
ENDLOOP.
写在最后的话
本文花费大量时间介绍了OPEN SQL中WHERE
语句大全,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!
✨原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下
👍 点赞,你的认可是我创作的动力!\textcolor{9c81c1}{点赞,你的认可是我创作的动力!}点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!\textcolor{ed7976}{收藏,你的青睐是我努力的方向!}收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!\textcolor{98c091}{评论,你的意见是我进步的财富!}评论,你的意见是我进步的财富!
相关文章:

「SAP ABAP」OPEN SQL(八)【WHERE语句大全】
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言A…...

Ribbon负载均衡的原理(源码分析)
SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。1)LoadBalancerIntercepor可以看到这里的intercept方法,拦截了用户的HttpRequest请求,然后做了几件事:1.request.getURI():获取请…...

用sql计算两个经纬度坐标距离(米数互转)
目录 一、sql示例(由近到远) 二 、参数讲解 三、查询效果 - 距离(公里 / 千米) 四、查询效果 - 距离(米) 五、距离四舍五入保留后2位小数(java) 一、sql示例(由近到远…...

C语言详解KMP算法
如果给你一个字符串 和 该字符串的一个子字符串 你能否快速找出该子字符串的所在位置我猜 这里会有一群杠精 说可以找到 真的吗 那下面这个字符串你可以一眼看出来吗你能找出来吗 如果能 算你眼神好 如果不能 那就看看接下来我怎么做你有想到暴力求解法吗?——来自百…...

redis在window上安装与自启动
需求: 客户window服务器使用redis,需要配置成在window服务中,并且可以随着电脑自启动服务。 下载 https://github.com/tporadowski/redis/releases打开上面的下载地址,这里我们下载zip压缩版本。 解压到待安装目录下ÿ…...

字符串匹配【BF、KMP算法】
文章目录:star:BF算法代码实现BF的改进思路:star:KMP算法🚩next数组🚩代码实现优化next数组最终代码⭐️BF算法 BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将主串S的第一个字符与模式串P…...

Leetcode.1616 分割两个字符串得到回文串
题目链接 Leetcode.1616 分割两个字符串得到回文串 Rating : 1868 题目描述 给你两个字符串 a和 b,它们长度相同。请你选择一个下标,将两个字符串都在 相同的下标 分割开。由 a可以得到两个字符串: aprefix和 asuffix,…...
剑指 Offer II 033. 变位词组
题目链接 剑指 Offer II 033. 变位词组 mid 题目描述 给定一个字符串数组 strs,将 变位词 组合在一起。 可以按任意顺序返回结果列表。 注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。 示例 1: 输入: strs [“eat”,…...

spring-cloud-sentinel ---流控算法---review
计数器算法 计数器算法,限定每个固定时间能处理的请求总数,例如1分钟100,如果在第一个一分钟,总共请求60次,接着第二个一分钟,counter又会从0 开始技术,如果在1.5分钟的时候,达到了…...

1.浅析NIO 多路复用器selector
一:IO基本介绍 Java共支持3种网络编程IO模式:BIO,NIO,AIO 0.Java对BIO、NIO、AIO的支持: Java BIO : 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端…...

Day920.结构化日志业务审计日志 -SpringBoot与K8s云原生微服务实践
结构化日志&业务审计日志 Hi,我是阿昌,今天学习记录的是关于结构化日志&业务审计日志的内容。 1、什么是结构化日志 结构化日志(Structured Logging)是一种将日志信息组织为结构化数据的技术。 传统的日志通常是一些文…...

前端代码复用学习笔记:整洁架构与清晰架构
基础代码的复用往往比较简单,但是业务代码的复用通常是困难的,如果没有特殊的手段去治理项目会逐渐发展为难以维护的巨石应用,按照维基百科记载,代码的复用形式主要有三种,程序库,应用框架,设计…...

【python刷题】leecode官方提示“->“,“:“这些符号是什么意思?什么是Type Hints?
作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…...
【华为OD机试真题2023 JAVA】最佳对手
华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 最佳对手 知识点排序DFS搜索回溯 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 游戏里面,队伍通过匹配实力相近的对手进行对战。 但是如果匹配的队伍实例相差太大,对于双方游戏体验都不会太好。 给定n个…...

css实现文字大小自适应
在页面编写中经常会碰到页面自适应的问题,也就是页面内部的元素会随着窗口的放大缩小而放大缩小,box可以通过calc 百分比的形式做到页面自适应,但是box内的字体却无法做到这点,往往box自适应大小了,内部的字体还是原来…...

【Redis】搭建哨兵集群
目录 集群结构 准备实例和配置 启动 测试 集群结构 这里我们搭建一个三节点形成的Sentinel集群,来监管之前的Redis主从集群。如图: 三个sentinel实例信息如下: 节点IPPORTs1192.168.150.10127001s2192.168.150.10127002s3192.168.150.…...

CTFHub | .htaccess
0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…...

微机原理 || 8253 芯片 (详细讲解 + 经典例题)
一点点看!一定可以看懂!考试没有问题的!加油💪 前面知识写的详细,看不懂可以先看典例,回头来梳理就明白了【典例就是常考的题】 目录 Part 1: 芯片知识总结 (一)8253 芯片特点 …...

python Django高级操作-分页-定义CVS-发送邮件
分页 分页是指在web页面有大量数据需要显示,为了阅读方便在每个页页中只显示部分数据。优点: 1.方便阅读2.减少数据提取量,减轻服务器压力。Paginator对像 负责分页数据整体的管理对象的构造方法Paginator属性 Paginator方法 Paginator异常exception pag…...

React 用一个简单案例体验一遍 React-dom React-router React-redux 全家桶
一、准备工作 本文略长,建议耐心读完,每一节的内容与上一节的内容存在关联,最好跟着案例过一遍,加深记忆。 1.1 创建项目 第一步,执行下面的命令来创建一个 React 项目。 npx create-react-app react-example cd rea…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...