2017-01-24 2 views

ответ

0

Вы можете Concat и конвертировать, вы также можете подстроки, но вы не можете заменить:

Update

Это как ваш бросок должен выглядеть следующим образом:

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»
  • Листинг (.. как плавающий) .. вам может потребоваться использование «двойного», «реального» или «цифрового» в зависимости от вашей базовой базы данных.
  • Если у вас есть немного другой формат на некоторых строках, тогда вы играете с вариацией моего запроса.
  • Суть в том, что вы не можете использовать REPLACE в hql .. такая функция не существует .. у вас есть использовать комбинацию SUBSTRING AND LOCATE. Это не так просто, как это было бы с REPLACE, но вы можете снять его, если приложите усилия.
+0

Но мне нужно удалить удалить точки, я просто могу сохранить первую точку, потому что мой номер для версии должен быть двойным. –

+0

дайте мне пример –

+0

У меня есть 2 колонки с '1.2.3' и '1.2.5' Мне нужно преобразовать оба ro, сравнивая с 1.20 (double или decimal) –

Смежные вопросы