2010-12-14 75 views
0

我在春季工作hibernate
我在我的數據庫表中有一列,它的類型是VARCHAR,但它存儲的是整數值。所以,如果我使用sqlhqlCriteria(Order.asc)sort它,一切都整理它作爲字符串。我需要它被存儲的整數值排序。在這裏,我無法改變我的桌子。
反正是有它排序爲使用Criteria
是我唯一的解決辦法是整數,它讀一些名單和排序在我的售後服務?按varchar字段存儲整數值排序表

編輯:我使用MYSQL

謝謝

+1

你可以在你的數據庫爲int,取決於你的數據庫的字符串轉換。對於MySQL(作爲一個例子),你有'轉換()'和'CAST()' – cristian 2010-12-14 09:01:06

+0

在哪個數據庫? – 2010-12-14 09:10:52

回答

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了。

+0

這個查詢看起來像原生sql,這在HQL或Criteria中可能嗎? – Ralph 2010-12-14 09:12:26

+0

它是本地的mySQL。這個問題明確指出它不應該。 – Joel 2010-12-14 09:13:52

+0

感謝您的重播。任何方式與Criteria一起使用?你重播 – 2010-12-14 10:03:56

0

SQL:

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

感謝。任何方式與Criteria一起使用? – 2010-12-14 10:05:28