2017-01-24 23 views
1

我需要Concat的2個colunms和值轉換爲數字,它上面是代碼:如何轉換爲字符串值數 - 休眠

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

有可能接觸Hibernate的人呢?

回答

0

可以Concat的和轉換,也可以串,但不能代替:

更新

這是你的施法看起來應該像:

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」
  • 演員表(.. as float)..根據您的基礎數據庫,您可能需要使用'double','real'或'numeric'
  • If你碰巧在某些行上有一些不同的格式,那麼你有玩我的查詢變化..
  • 底線是,你不能在hql中使用REPLACE ..這樣的功能不存在..你有使用SUBSTRING和LOCATE的組合。它不像使用REPLACE那樣容易,但如果你付出努力,你可以把它關掉。
+0

但是我需要刪除刪除點,我只是可以保留第一個點,因爲我的版本號需要加倍。 –

+0

給我一個例子 –

+0

我有'1.2.3'和'1.2.5'2列我需要轉換兩個ro比較1.20(雙或十進制) –