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

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...