sql - 如何从数据库中的字符串字段中提取数字(整数)并找到最大值
问题描述
我有一个实体。一个名为“数字”的字段由字符串组成。它是一个数字+一些文本信息。例如: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();
}
我怎样才能做到这一点?
解决方案
您可以使用以下 JPQL 查询:
SELECT
MAX(CAST(SUBSTRING(id, 1, LOCATE(id, '-') - 1) AS INTEGER))
FROM EmployeeTripCard s;
我们可以使用LOCATE
查找第一个的索引-
,然后调用SUBSTRING
查找初始编号。请注意,我们还需要将此结果字符串转换为整数,以便MAX
按照我们想要的方式运行(作为文本的数字并不总是与实际纯数字的排序方式相同)。
推荐阅读
- django - 无法在 Django 表单中更新我的个人资料数据
- ssl - 测试 LetsEncrypt 证书更新
- php - 仅获取与数组中的值不同的值
- css - 有没有一种有效的方法可以通过 CDN 从 Bootstrap5 覆盖 CSS 变量(CSS 自定义属性)?
- python - 烧瓶 run_with_ngrok Google Colab
- javascript - 如何在每个选项卡下显示数据?
- php - 计算 Laravel 集合中的许多东西
- wordpress - 如何在域的子目录中配置wordpress,而主目录包含nextjs项目?(EC2,Ubuntu20,Nginx服务器)
- audio - 使用 youtube-iframe-api 连接示波器可视化
- python - Python 安卓应用程序连接