CDS View select语句中,如何将DEC类型转换为INT类型?

In CDS View select statement, how to convert type DEC to type INT?

在 CDS 视图 select 语句中,假设我有一个类型为 DEC 的列,我如何将其转换为类型 INT

到目前为止完成的工作: 根据 CAST_EXPR documentation, this is not possible with CAST_EXPR . According to the numeric functions documentation,像 FLOOR 这样的数学函数将 return 相同类型的值。

更新: numeric functions documentation 是正确的。

代码 floor(fieldname) 会将 DEC(X,Y)(其中 Y > 0)转换为 DEC(X,0)。本质上,floor 从字段中去除小数位而不更改其类型。

另一方面,ceil(fieldname) 将四舍五入为最接近的整数 DEC 转换为 INT

如果你想从floor函数中得到一个整数,那么你必须调用ceil(floor(fieldname))

在 NetWeaver 系统上,您应该能够找到有助于演示这些概念的 CDS 视图 demo_cds_sql_functions_num 和 program/report demo_cds_sql_functions_num。您可以使用调试器查看报告的变量 result 并确认我的发现。

ceil 做到了:

cast(ceil(fieldname) as abap.int4)

请注意 floor 不会。