【前言】MySQL中比较字符串形式的数字时,如果简单的用order by 或者 > <会有意想不到的结果。此时需要程序猿自己转换一下比较格式,比如加上负号'-'或者加上数字‘1’,我更喜欢加上数字'0',那么Hibernate中该怎么做呢?
【正文】
MySQL有时候不得不用字符串存数字,特别是数据源来自第三方的时候,此时程序猿心里是崩溃的。
select saledpricefrom store where saledprice< orderedprice;
saledprice | orderdprice |
"90" | "850" |
"850" | "900" |
结果
“850”
这个时候要转成数字进行比较
select saledpricefrom store wheresaledprice+0 < orderedprice+0;
Hibernate呢?
如果不带外部参数,直接+0就行
String hql = “selece saledprice from store where saledprice+0< orderdprice+0”;
如果需要外部参数,一方面+0,参数用setInt写入
String hql = “selece saledprice from store where saledprice+0 <:myPocket";
Query query = session.createQuery(hql).setInteger("myPocket":500);