如何将字符串值转换为数字 - Hibernate

时间:2017-01-24 15:57:43

标签: hibernate jpql

我需要连接2个colunms并将值转换为number,上面是代码:

SELECT T FROM TABLE T WHERE CAST(substring(replace(T.versionSince, '.', ''), 1, 1)+'.'+substring(replace(T.versionSince, '.', ''), 2) as  DOUBLE) <= :version

可以用Hibernate做到吗?

1 个答案:

答案 0 :(得分:0)

你可以连接和转换,你也可以子串,但你不能替换:

<强>更新

这就是你的演员应该是这样的:

cast(
     (concat(
              substring(u.firstName,1,locate('.', u.firstName))
              , concat(
                        substring(
                                  u.firstName
                                  ,1+locate('.', u.firstName, locate('.', u.firstName))
                                  ,locate('.', u.firstName, 1+locate('.', u.firstName, locate('.', u.firstName)))- (1+locate('.', u.firstName, locate('.', u.firstName)))
                                 )
                       , substring(
                                   u.firstName
                                   , 1+locate('.', u.firstName, 1+locate('.', u.firstName, locate('.', u.firstName)))
                                   , length(u.firstName)
                                  )
                       )
             )
      ) as float
    )

<强>此外:

  • 这适用于以下字符串:“1.2.3”
  • 演员表(..作为浮点数)..您可能需要使用'double','real'或'numeric',具体取决于您的基础数据库
  • 如果您在某些行上碰巧有不同的格式,那么您可以使用我的查询的变体进行播放..
  • 底线是你不能在hql中使用REPLACE ..这样的函数不存在..你必须使用SUBSTRING和LOCATE的组合。它并不像REPLACE那么容易,但如果付出努力就可以把它拉下来。