0
点赞
收藏
分享

微信扫一扫

OceanBase V4.2 MySQL模式下,如何通过DBLINK实现跨数据源访问

前行的跋涉者 04-16 21:00 阅读 2
ABAPsql

文章目录

字符串处理

在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类型(日期)

在这里插入图片描述

举报

相关推荐

0 条评论