经常我都要在ABAP的sql语句中对字符串进行处理,现在就总结一下可以用到的方法
文章目录
- 字符串处理
- 拼接字段
- 运行结果
- 填充字符串
- 运行结果
- 截取字符串 SUBSTRING
- 运行结果
- CAST转换类型
- 程序
- 运行结果
- CAST 转换成 DATS类型(日期)
字符串处理
在SQL语句中,有时候会有需要拼接字段或者是截取字段
拼接字段
在拼接之前:
SELECTcarrid, "航线connid, "航班号fldate, "日期planetype "飞机类型FROM sflightWHERE connid = '17'INTO TABLE @DATA(lt_sflight).cl_demo_output=>display( lt_sflight ).
运行结果
第一种:concat(A, 字段) as 别名 ----- A 可以为自定义字段
第二种:(C && B ) AS 别名 ---- 注意,B与C都是需要为char类型才能使用这个
SELECTcarrid, "航线connid, "航班号substring( fldate,1,4 ) AS fldate, "日期( 'CHAR类型拼接' && planetype ) AS planetype1, "飞机类型concat( 'CONCAT拼接',planetype ) AS planetype2 "飞机类型FROM sflightWHERE connid = '17'INTO TABLE @DATA(lt_sflight2).
cl_demo_output=>display( lt_sflight2 ).
填充字符串
RPAD( arg, len, src ) ,三个参数分别指定了操作字段;填充后值的长度;填充字符
RPAD函数:从右侧填充
SELECTcarrid, "航线connid, "航班号fldate, "日期planetype, "飞机类型rpad( planetype,15,'!' ) AS planetype_rFROM sflightWHERE connid = '17'INTO TABLE @DATA(lt_sflight).cl_demo_output=>display( lt_sflight ).
运行结果
截取字符串 SUBSTRING
SUBSTRING函数截取任意位置任意长度的字符串
取截取后的三位内容作为一个新的字段,放进内表中
SELECTmarc~werks, "工厂substring( marc~matnr,3,5 ) AS matnr_t"物料,截取之后的FROM marcWHERE marc~werks = '1000'INTO TABLE @DATA(lt_temp3)UP TO 5 ROWS.IF sy-subrc = 0.cl_demo_output=>display( lt_temp3 ).ENDIF.
运行结果
SPACE是ABAP的预定义的字段,
CAST转换类型
ZCHAR是CHAR13类型的字段,CON是planetype字段转换成CHAR类型,长度是20:
程序
REPORT z_test_zero_lhy.
SELECTcarrid, "航线connid, "航班号substring( fldate,1,4 ) AS fldate, "日期截取年份planetype,CAST( planetype AS CHAR( 20 ) ) AS con, "把planetype的值取出来,放在 con字段中。con字段为 CHAR 类型,长度为20CAST( @space AS CHAR( 13 ) ) AS zchar "新增为char13的字段FROM sflightWHERE connid = '17'INTO TABLE @DATA(lt_sflight_cast).cl_demo_output=>display( lt_sflight_cast ).