在CDS View select语句中,假设我有一个DEC
类型的列,如何将其转换为INT
类型?
到目前为止完成的工作:根据CAST_EXPR
documentation,CAST_EXPR
无法做到这一点。根据{{3}},像FLOOR
这样的数学函数将返回相同类型的值。
答案 0 :(得分:2)
更新: 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
和程序/报告demo_cds_sql_functions_num
。您可以使用调试器查看报告的变量result
并确认我的发现。
答案 1 :(得分:1)
ceil
这样做:
cast(ceil(fieldname) as abap.int4)
请注意floor
赢了