在 CDS View 选择语句中,假设我有一列 type DEC
,如何将其转换为 type INT
?
到目前为止所做的工作:根据CAST_EXPR
文档,这是不可能的CAST_EXPR
。根据数字函数文档,数学函数之类FLOOR
的将返回相同类型的值。
在 CDS View 选择语句中,假设我有一列 type DEC
,如何将其转换为 type INT
?
到目前为止所做的工作:根据CAST_EXPR
文档,这是不可能的CAST_EXPR
。根据数字函数文档,数学函数之类FLOOR
的将返回相同类型的值。
更新:数字函数文档是正确的。
该代码floor(fieldname)
会将 a DEC(X,Y)
(where Y > 0
) 转换为 a DEC(X,0)
。本质上,floor
从字段中去除小数位而不更改其类型。
另一方面,ceil(fieldname)
将四舍五入到最接近的整数并将a 转换DEC
为INT
如果要从floor
函数中获取整数,则必须调用ceil(floor(fieldname))
在 NetWeaver 系统上,您应该能够找到有助于演示这些概念的 CDS 视图demo_cds_sql_functions_num
和程序/报告。demo_cds_sql_functions_num
您可以使用调试器查看报告的变量result
并确认我的发现。
ceil
可以:
cast(ceil(fieldname) as abap.int4)
注意floor
不会。