ABAP数据库操作之单多行数据选择与指定查询条件

1,选择单行数据
当只需选取一个结果数据行时,使用单行选择,单行选择需在select子句中使用single关键字指明,且into子句后面结构必须为扁平结构:
select single <result> into <target> from <source> ...
<1>,选择全部:使用 * ,into语句的目标对象最好和from语句中指定的选择表行结构类型相同,至少要兼容。
<2>,选择指定字段:在from子句中指定所需选择字段,into子句中指明与这些字段对应的扁平结构或者一系列基本类型数据对象。

2,选择多行数据:
<1>,循环选择:通过select/endselect循环从数据库表中读取多行,步骤如下:
根据选择结果,声明一个工作区或者几个基本类型变量;
用select语句选择当前满足条件的一行进入结果对象;
对当前选择结果进行操作
直至endselect语句,若系统数据库满足条件的数据不止一行,继续选择新行至目标数据对象,旧的值被覆盖,直至所有满足条件被处理,循环结束。
select [distinct] <result> ... <statement block> endselect.
distinct项可以自动去掉结果重复的行
<2>,选择至内表:一次性把数据选择到内表中去
select ... into|appending  [corresponding flelds of] table itab.
如果不希望覆盖内表原有内容,而是在其基础之上附加,则应使用APPENDING。内表可以与数据库表结构相同,如果结构不完全相同,也可以使用into子句中的corresponding flelds选项将同名区域相对应。
<3>,指定选择包大小:包的大小指的是一次性选择到内表的行数,如果需要将所选行按以预定义大小的包一段段的读到内表中,可使用into子句的package size。
select * ... into table itab package size n ...
    <statement block>
endselect.
如果n小于或等于零将出现运行时错误。

3,指定查询条件:
<1>,比较运算符:"="  "<"  ">"  "<>"  "<="  ">="  和相应的关键字如EQ等。
<2>,范围限定运算符:[not] between g1 and g2  不在或者在g1和g2之间
<3>,字符比较运算符:对于字符类型数据字段,使用like运算符进行模式化比较:
    where ... f [not] like g [escape h] ...
数据条目中,字段f中必须(或不能)含g的模式。g中通配符"_"用于代替单个字符,"%"用于代替任意字符串,包括空字符串。
"%town%"选定所有包含town的字段,如果在比较中,g字段本身要用到通配符,可以使用escape选项指定一个忽略符号h。如果通配符前面有符号h,那么通配符和忽略符号本身都失去了它在模式g中的功能,二是还原为其本义,如"edit_"选定所有以edit开头的。
<4>,检查列表值:[not] in {g1, ... ,gn} ...  (不能)等于括号内中的一个值,该形式,括号和比较字段g之间不能有空格,但比较字段之间可以有空格。    
<5>,检查空值:is [not] null 是否为空
<6>,检查选择表:where ... f [not] in seltab ... 可以与and,or,not组合使用。

猜你喜欢

转载自blog.csdn.net/LittleMangoYX/article/details/80360446
今日推荐