「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…...

9. C#面向对象基础
一、C# 类 在 C# 中,类是引用类型的。类由成员属性和成员方法构成。我们可以动态创建类的实例(instance),这个实例也被称为对象(object),我们可以通过类和对象来设计程序。 1、类的定义 类的定…...

【MIT 6.S081】Lab2: system calls
本Lab包括两个简单系统调用的实现,进一步熟悉系统调用接口。 笔者用时约1.5h 概述 根据文档说明,当我们添加一个系统调用时,比如第一个任务是添加一个trace,需要进行以下操作: 首先将系统调用的原型添加到user/user…...

设计模式之单例模式~
设计模式包含很多,但与面试相关的设计模式是单例模式,单例模式的写法有好几种,我们主要学习这三种—饿汉式单例,懒汉式单例、登记式单例,这篇文章我们主要学习饿汉式单例 单例模式: 满足要点: 私有构造 …...

top终端详解
1.top命令行使用 2.top每行意义 3.补充 1.top命令行使用 top命令是一个常用的Linux系统命令,用于实时查看系统的运行状态和进程信息。下面是top命令的几个常用参数的含义: -d seconds:设置top命令的更新间隔时间,单位是秒。默认是…...

解决一个偶现的503 bug,花了俺不少时间
概述 在3月2日晚上,大概8点左右,本想打道回府,回家休息,突然被人在bug群了一下,说是管理后台,访问不了,界面上出现了: 503 service temporarily unavailable我赶紧尝试访问了一下,确…...

什么是栈,如何实现?
欢迎来到 Claffic 的博客 💞💞💞 “但有一枝堪比玉,何须九畹始征兰?” 前言: 栈是一种特殊的线性表,就像开盖的桶一样,从底部开始放数据,从顶部开始取数据,那么栈具体是…...

在我的MacBook上捣鼓ESP8266
周三是我们的篮球日,打篮球后总是会有些兴奋,然后就容易睡不着,额,睡不着就拿我的ESP8266开发板出来捣鼓一下。先下载编译工具链https://github.com/espressif/ESP8266_RTOS_SDK下载sdkgit clone https://github.com/espressif/ES…...

【深度强化学习】(8) iPPO 模型解析,附Pytorch完整代码
大家好,今天和各位分享一下多智能体深度强化学习算法 ippo,并基于 gym 环境完成一个小案例。完整代码可以从我的 GitHub 中获得:https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 1. 算法原理 多智能体的情形相比于单智…...

77.qt qml-QianWindow-V1版本界面讲解
上章介绍: 76.qt qml-QianWindow开源炫酷界面框架简介(支持白色暗黑渐变自定义控件均以适配) 界面如下所示: 代码结构如下所示:...

RHCE学习日记二
1、在 node1 主机上配置 chrony 时间服务器,将该主机作为时间服务器。 命令: vim /etc/chrony.conf 在文件位置添加命令: #Use public servers from the pool.ntp.org project. #Please consider joining the pool (https://www.pool.ntp.org…...