Как извлечь числа (целое число) из поля String в базе данных и найти максимум - PullRequest
1 голос
/ 17 января 2020

У меня есть сущность. Одно поле с именем «число» состоит из строки. Это число + некоторая текстовая информация. Например: 131-MOD 11853-ARO 983-AKK et c.

Моя задача: получить максимум первого числа. Итак, я должен извлечь значение Integer из строки «число» и найти максимум из него. Для приведенных выше примеров это будут числа 131, 11853 и 983. Таким образом, максимум составляет 11853. В результате я должен получить это целочисленное значение. Здесь я попробую использовать Hibernate. Но это работает только с целочисленными значениями. Как извлечь число, я понятия не имею.

public Integer getMaxNumber()
{
   return (Integer) getSessionFactory().getCurrentSession().createQuery("select max(id) from EmployeeTripCard s").uniqueResult();
}

Как я могу это сделать?

1 Ответ

1 голос
/ 17 января 2020

Вы можете использовать следующий запрос JPQL:

SELECT
    MAX(CAST(SUBSTRING(id, 1, LOCATE(id, '-') - 1) AS INTEGER))
FROM EmployeeTripCard s;

Мы можем использовать LOCATE, чтобы найти индекс первого -, затем вызвать SUBSTRING, чтобы найти начальный номер. Обратите внимание, что нам также нужно привести эту результирующую строку к целому числу, чтобы MAX вел себя так, как мы хотим (числа в виде текста не всегда сортируются так же, как действительные чистые числа).

...