嗨,有人可以帮助我如何在hql中舍入到2位小数? 我在网上找不到任何东西。以下是我的询问:
Select p.amount as amt,p.desc from pay p, register r where r.type=?1 and r.code=?2;
如果有人可以提供帮助,我会很高兴。
使用的技术:hibernate,spring,java,primefaces 4.0,oracle数据库
答案 0 :(得分:2)
我一直在努力解决这个问题,终于找到了以下解决方案:
如果你想更加独立于数据库,并且特别想要支持Postgres或Oracle DB,你可以使用floor函数进行舍入,这是非常通用的,不会为不同的实现留下太多空间,这意味着这可能适用于所有数据库(用Postgres和MySQL测试)。
该代码段执行舍入为2位数并按绝对值舍入。您可以根据自己的需要轻松调整它。
使用100.0将除法除以100。这将确保您总是得到一个双倍的结果,如果您在舍入值上建立一个总和,这一点尤为重要。
floor(abs(value) * 100 + 0.5)/100.0 * sign(value)
答案 1 :(得分:0)
在属性上使用FORMAT
函数到2个小数点
Select FORMAT(p.amount,2) as amt,p.desc from pay p, register r where r.type=?1 and r.code=?2;
或者你可以在映射文件中指定相同的内容,如下面的
<property name="amount">
<column name="amount" scale="15" precision="3" sql-type="number(15,2)"/>
</property>
答案 2 :(得分:0)
这对我有用
cast(value as decimal(9,2))