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