2014-09-02 46 views
0

我有一個字符串,我的結果是排序。它由一個房間號,居民姓名和其他一些字段組成。字符串中整數的SQL順序

實施例:

460, Bob Jones, ...... 
5, John Doe, ..... 

的問題是,當我爲了這種方式,它把與前方具有大一個開始小的數字的數量少開始大量(即,460被放置之前5)。我如何讓sql處理整個字符串中的整數,並根據整個數字進行排序,而不僅僅是第一個數字值?

+0

字符串不是整數,它會將數字排序爲1,10,11,2,20,3,4,44等,如果它們存儲爲字符串(varchar)...首先評論是重新考慮你的數據庫使用情況,存儲字符串與整數值混合數據是可怕的做法。如果數據庫結構不在您的作用域之內......使用子字符串,您可以在第一個逗號之前挑出整數,轉換爲整數並對其進行排序。你在哪個數據庫上?字符串函數在它們之間不同 – Twelfth 2014-09-02 23:37:05

回答

1

您可以通過將字符串的初始部分轉換爲數字來完成此操作。但是,這取決於數據庫。例如,在MySQL中,你可以值到一個整數剛剛加入+ 0轉換:

order by string + 0 

在其他數據庫,則需要分開到逗號,做一個轉換。例如,在SQL Server中:

order by cast(left(string, charindex(',', string) - 1) as int)