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

时间:2010-12-14 08:58:21

标签: java sql hibernate hql criteria

我在春天工作休眠 我的数据库表中有列,类型为VARCHAR,但它存储整数值。因此,如果我sort使用sqlhqlCriteria(Order.asc),则所有人都将其排序为字符串。我需要将它排序为它存储的整数值。在这里,我不能改变我的桌子 无论如何使用Criteria来将其排序为整数 对我来说唯一的解决方案是,在将其读入某个列表并在我的服务中进行排序之后?

编辑:我使用MYSQL

谢谢

2 个答案:

答案 0 :(得分:1)

您可以在排序之前尝试将其投射。在 mysql 中,类似这样:

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

或作为无符号整数:

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

施放似乎也是有效的HQL expression

答案 1 :(得分:0)

SQL:

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