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

Java 按存储在varchar字段中的整数值对表进行排序,java,sql,hibernate,hql,criteria,Java,Sql,Hibernate,Hql,Criteria,我在春天冬眠 我的数据库表中有一列,类型为VARCHAR,但它存储整数值。因此,如果我使用sql或hql或Criteria(Order.asc)对它进行排序,那么所有人都将它作为字符串进行排序。我需要它被排序为整型值它存储。在这里我不能更改我的桌子。 是否使用标准将其排序为整数 对我来说,唯一的解决办法是,在我的服务中阅读一些列表和排序之后 编辑:使用MYSQL的me 谢谢你你可以在分类之前试着铸造它。在mysql中,类似以下内容: SELECT CAST(myVarcharField AS D

我在春天冬眠
我的数据库表中有一列,类型为
VARCHAR
,但它存储整数值。因此,如果我使用
sql
hql
Criteria(Order.asc)
对它进行排序,那么所有人都将它作为字符串进行排序。我需要它被排序为整型值它存储。在这里我不能更改我的桌子。
是否使用
标准将其排序为整数

对我来说,唯一的解决办法是,在我的服务中阅读一些列表和排序之后

编辑:使用MYSQL的me


谢谢你

你可以在分类之前试着铸造它。在mysql中,类似以下内容:

SELECT CAST(myVarcharField AS DECIMAL(10)) as myIntField order by myIntField; 
或作为无符号整数:

SELECT CAST(myVarcharField AS UNSIGNED) as myIntField order by myIntField; 
强制转换似乎也是有效的。SQL:

SELECT CAST(t.order AS UNSIGNED INTEGER) AS intOrder 
    FROM myTable t ORDER BY intOrder ASC

您可以在数据库中将字符串转换为int,具体取决于您的数据库。对于Mysql(例如),您有
convert()
cast()
这个查询看起来像原生sql,这在HQL或Criteria中也可能吗?它是原生Mysql。这个问题明确指出不应该这样做。谢谢你的重播。有没有办法将此用于标准?谢谢您的重播。有没有办法将其与标准一起使用?