「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…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
