2011-03-07 55 views
1

你好我正在研究一個oracle數據庫,它的表id是varchar2,它實際上只包含數字。 2000,30201.現在我需要將這些值作爲數字進行比較,因此我使用TO_NUMBER()函數,但結果仍然不成功。示例代碼如下。任何幫助深表謝意。將varchar2轉換爲數字不會產生正確結果的順序

SELECT ID FROM facty WHERE to_number(ID)>2 ORDER BY ID 

當前結果: 11,4,5,6,8,9

我需要它產生4,5,6,8,9,11

+1

爲什麼你將數字存儲爲文本?這是低效的,並且當您的其中一個ID是無效號碼時也會導致很多問題。 – 2011-03-07 16:47:00

回答

2

不要使用Oracle,但我猜你還需要在ORDER BY上包含to_number(id)。您當前的查詢ORDER BY使用varchar字段,而不是數字轉換。

+0

感謝您的提示!我嘗試了ORDER BY TO_NUMBER(ID),它工作。 – luhfluh 2011-03-07 16:46:30

+0

我知道它不是傳統的,它讓生活變得更加困難,但是這是一個公司(遺留物)的當前數據字典,並且一些值最終以字母「A302」和一些純粹的「30201」結束。我現在只需要堅持下去。 – luhfluh 2011-03-07 16:50:54

相關問題