java - 按 varchar 字段中存储的整数值对表进行排序

标签 java sql hibernate hql criteria

我在 Spring hibernate 中工作
我的数据库表中有一个 VARCHAR 类型的列,但它存储整数值。因此,如果我使用 sql 或 hql 或 Criteria(Order.asc) 对其进行排序,则所有排序都会将其排序为字符串。我需要将它按照它存储的整数值进行排序。在这里我不能改变我的 table 。
无论如何,是否可以使用 Criteria
将其排序为整数 对我来说唯一的解决方案是在将其阅读到某个列表并在我的服务中进行排序之后吗?

编辑:我使用MYSQL

谢谢

最佳答案

您可以在排序之前尝试对其进行强制转换。在 mysql 中,类似这样:

SELECT CAST(myVarcharField AS DECIMAL(10)) as myIntField order by myIntField; 

或作为无符号整数:

SELECT CAST(myVarcharField AS UNSIGNED) as myIntField order by myIntField; 

cast 似乎是有效的 HQL expression也是。

关于java - 按 varchar 字段中存储的整数值对表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437410/

相关文章:

mysql - WiFi 信息的数据类型

java - 如何将具有共享主键的数据库模式转换为 hibernate ?

oracle - java.sql.SQLException : No suitable driver when running tests through spring roo

java - 如何使用 Selenium 和 Java 单击文本为 Ok 的元素

sql - 左连接的最佳(连接)顺序

java - 使用 JTextField 时无法在内部类错误中引用非最终变量

MySQL查询以获取不属于另一个表的所有项目

hibernate - 非事务性 GroovyTestCase 集成测试中的 GORM 事务

java - 以全屏模式启动 MPlayer

java - 如何在不舍入的情况下将数字从 double 转换为 int?