在orientdb中,我有一个问题的示例查询
select eval('((23 + 46) * 1.0 ) / 2') as abc from SomeClass
上面的查询返回34.5我想将它四舍五入到35.我应用asInteger()但它没有工作。
select eval('((23 + 46) * 1.0 ) / 2').asInteger() as abc from SomeClass
上面的查询返回34,但我希望它是35
答案 0 :(得分:2)
我不知道是否有一些本机功能可以实现这一目标。
但你可以用Studio创建一个javascript函数,例如ceil
并在体内完成工作。
尝试插入此功能。
insert into OFunction set name = 'ceil', language = 'javascript', code = 'return Math.ceil(num);', parameters = ["num"]
然后
select ceil(eval('((23 + 46) * 1.0 ) / 2'))
答案 1 :(得分:1)
由于此功能无法使用,您可以定义自己的功能(打开Studio - >功能选项卡),其名称为“round”,使用以下代码获取1个参数“value”:
return java.lang.Math.round(value);
然后你可以用SQL调用它:
select round(value) as abc from SomeClass
其中value是SomeClass类中的属性。