首页 > 解决方案 > 如何从数据库中的字符串字段中提取数字(整数)并找到最大值

问题描述

我有一个实体。一个名为“数字”的字段由字符串组成。它是一个数字+一些文本信息。例如:131-MOD 11853-ARO 983-AKK 等。

我的任务是:获取第一个数字的最大值。所以,我必须从字符串“数字”中提取整数值并从中找到最大值。对于更高的示例,它将是数字 131、11853 和 983。因此,最大值为 11853。因此,我必须得到这个整数值。在这里,我尝试使用 Hibernate。但它只适用于整数值。如何提取数字,我不知道。

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

我怎样才能做到这一点?

标签: sqldatabasehibernatejpamax

解决方案


您可以使用以下 JPQL 查询:

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

我们可以使用LOCATE查找第一个的索引-,然后调用SUBSTRING查找初始编号。请注意,我们还需要将此结果字符串转换为整数,以便MAX按照我们想要的方式运行(作为文本的数字并不总是与实际纯数字的排序方式相同)。


推荐阅读