嗨,有人可以帮助我如何在hql中舍入到2个小数位吗?
我在网上找不到任何东西。以下是我的查询:在hibernate查询语言中舍入到2位小数位
Select p.amount as amt,p.desc from pay p, register r where r.type=?1 and r.code=?2;
如果有人可以帮忙,我会很高兴。
技术应用于:冬眠,春天,JAVA,primefaces 4.0,Oracle数据库
嗨,有人可以帮助我如何在hql中舍入到2个小数位吗?
我在网上找不到任何东西。以下是我的查询:在hibernate查询语言中舍入到2位小数位
Select p.amount as amt,p.desc from pay p, register r where r.type=?1 and r.code=?2;
如果有人可以帮忙,我会很高兴。
技术应用于:冬眠,春天,JAVA,primefaces 4.0,Oracle数据库
使用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>
我尝试这两个。这是行不通的! – Samantha
我有这个挣扎了很多的终于找到了以下解决方案:
如果您希望更独立于数据库,并且特别想支持Postgres或Oracle DB,则可以使用底层函数进行舍入,这是非常通用的,并且不会为不同的实现留出太多空间,这意味着这可能适用于所有数据库(使用Postgres和MySQL进行测试)。
该片段执行四舍五入为2位数字并按绝对值四舍五入。你可以很容易地适应你的需求。
注意使用100.0除以100。这将确保您始终得到双倍的结果,如果您对舍入值进行求和,这一点尤其重要。
floor(abs(value) * 100 + 0.5)/100.0 * sign(value)
你尝试过'选择圆(p.amount,2)为AMT,...'基本上你也可以使用SQL函数在HQL取决于其数据库使用的是 – Jaiwo99
HTTP ://stackoverflow.com/questions/9992384/how-can-i-round-a-column-value-with-a-jpa-query – Jay
@ Jaiwo99不,它不起作用。我正在使用oracle数据库 – Samantha