ABAP SQL 字符串处理-CONCAT&CAST

89 篇文章 0 订阅

经常我都要在ABAP的sql语句中对字符串进行处理,现在就总结一下可以用到的方法

字符串处理

在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 ).

运行结果

在这里插入图片描述

CAST 转换成 DATS类型(日期)

在这里插入图片描述

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值