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
不会。
在 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
不会。