abap - 忽略 JOIN 条件中的前导零?

标签 abap opensql

我想在内连接 SQL 选择中将字段 bseg~zuonraufk~aufnr 进行比较。

SELECT bseg~hkont, bseg~zuonr, bseg~belnr, bseg~gjahr, aufk~prctr FROM bseg INNER JOIN aufk
  ON bseg~zuonr = aufk~aufnr "<--
  WHERE bseg~hkont IN @s_hkont
  INTO TABLE @DATA(output).

此选择不适合我,并且不会返回任何数据。

我认为我的问题是,aufk~aufnr有前导零(例如:000072667023),而bseg~zuonr仅包含不带前导零的数字(例如:72667023)。

我尝试使用 TRIM-function在 SQL select 内部,但这对我不起作用(代码片段:ON bseg~zuonr = TRIM( LEADING '0' FROM aufk~aufnr )"("此处不允许。应为“.”。)

我做错了什么吗?您知道这个问题有什么解决办法吗?

最佳答案

您可以使用concat函数。例如

SELECT bseg~hkont, bseg~zuonr, bseg~belnr, bseg~gjahr, aufk~prctr 
  FROM bseg 
  JOIN aufk ON concat( '0000', bseg~zuonr ) = aufk~aufnr
 WHERE bseg~hkont IN @s_hkont
  INTO TABLE @DATA(output).

您还可以将其与 substring 结合使用,将 aufnr 精确设置为 12 个字符

关于abap - 忽略 JOIN 条件中的前导零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74094099/

相关文章:

abap - CL_SALV_TREE 类的 SET_DATA_ROW 方法是否存在错误?

xml - 存储深层/嵌套结构

abap - 将 VBAK/VBAP 字段有条件聚合到信息集中的单行中

abap - 在子查询中选择多个字段

abap - 如何从abap中的日期获取日期?

abap - 触发选择开始

oracle - 如何在 Oracle 中重新创建 SAP 查询?

indexing - Open-Sql 转换为 native oracle sql 通过 where 子句选择任意索引?

子查询抛出错误 : "Wrong table name or table alias"

abap - AMDP 与 HANA DB 过程的性能对比?